Maven入门:构建与依赖管理全解析

一,什么是Maven

Maven 是一款基于 Java 平台的项目构建和依赖管理工具,简单来说,它解决了 Java 开发中的两个核心痛点:

  1. 手动管理 Jar 包(依赖)麻烦:比如需要自己下载 Jar 包、解决 Jar 包之间的版本冲突、手动将 Jar 包加入项目类路径。
  2. 项目构建流程不统一:比如编译、测试、打包、部署等步骤,不同开发者可能有不同的操作方式,容易出问题。

二、maven的核心概念

cmake 复制代码
my-project
├── src
│   ├── main
│   │   ├── java      # 主代码
│   │   └── resources # 配置文件
│   └── test
│       ├── java      # 测试代码
│       └── resources # 测试配置
├── target            # 构建输出
└── pom.xml           # 项目配置
 

三.创建一个项目里面都有这些

1.idea :

这是 IDEA 开发工具的配置文件夹,存储了项目的 IDE 配置信息,比如代码风格、运行配置、插件设置等。

它是 IDEA 自动生成的,不需要手动修改,也不需要提交到代码仓库。

2.mvn:

这个文件夹包含了 Maven 包装器(Maven Wrapper)的相关文件,它的作用是让项目在没有全局安装 Maven 的环境下也能运行。

确保所有开发者使用的是项目指定的 Maven 版本,避免因版本不一致导致的问题。

3. src

这是项目的源代码和资源文件的根目录,Maven 项目的核心内容都在这里面。

src/main

存放项目的主程序代码和资源,也就是最终会打包到生产环境里的内容。

  • java:存放 Java 源代码,比如你的 com.yunku.Main 主类就在这里。
  • resources:存放主程序的配置文件、静态资源等,比如 application.propertiesmybatis-config.xml

src/test

存放项目的测试代码和资源,只在开发阶段用于单元测试、集成测试等。

  • java:存放测试代码,比如 MainTest.java
  • resources:存放测试用的配置文件,比如 application-test.properties

4.pom.xml

这是 Maven 项目的核心配置文件,是整个项目的 "灵魂"。

  • 定义项目的基本信息(GAV 坐标)。
  • 声明项目依赖(比如你需要引入的 Spring、JUnit 等 Jar 包)。
  • 配置构建规则(比如打包方式、插件等)。

1,基本坐标构成有

Maven 的基本坐标由 groupIdartifactIdversion 三个部分组成,合称为 GAV,所有 Maven 项目和依赖都必须具备这三个坐标,缺一不可,它的核心作用是在全球范围内唯一标识一个项目(或一个 Jar 包依赖),避免命名冲突。

xml 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 核心坐标 GAV -->
    <groupId>com.example</groupId>//比如公司部门
    <artifactId>maven-demo</artifactId>//项目
    <version>1.0.0-SNAPSHOT</version>//版本号
</project>

2,声明依赖

使用maven首先需要配置阿里云镜像网站,和设置本地仓库位置

xml 复制代码
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>
 
//配置本地仓库
<localRepository>D:\DevTools\maven-repository</localRepository>
//需要找到指定位置
xml 复制代码
<!-- 项目依赖管理:所有第三方 Jar 包都在这里声明 -->
<dependencies>
    <!-- 示例 1:引入 JUnit 4(用于单元测试,仅测试阶段生效) -->
    <dependency>
        <!-- 依赖的 GAV 坐标(每个依赖都有自己唯一的 GAV) -->
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <!-- 依赖作用域:test 表示仅在 src/test 目录下的测试代码中生效,不打包到最终产物 -->
        <scope>test</scope>
    </dependency>

    <!-- 示例 2:引入 Spring Core 核心依赖(项目主代码中生效) -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.20</version>
        <!-- 省略 scope 时,默认作用域为 compile(主代码编译、运行、打包都生效) -->
    </dependency>
</dependencies>

3,配置构建规则(打包方式、插件等

xml 复制代码
<!-- 项目构建配置:控制编译、打包等构建流程 -->
<build>
    <!-- 1. 配置构建的基础信息(可选):指定打包后的产物名称 -->
    <finalName>Maven-Demo-1.0</finalName>

    <!-- 2. 配置构建插件:最核心的是编译插件,解决 JDK 版本兼容问题 -->
    <plugins>
        <!-- 示例:配置 Maven 编译插件,指定 JDK 8 编译 -->
        <plugin>
            <!-- 插件的 GAV 坐标(插件也是一种特殊的 Maven 项目) -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <!-- 插件的具体配置 -->
            <configuration>
                <source>8</source> <!-- 源代码兼容 JDK 8 -->
                <target>8</target> <!-- 编译后字节码兼容 JDK 8 -->
                <encoding>UTF-8</encoding> <!-- 编译时编码为 UTF-8 -->
            </configuration>
        </plugin>
    </plugins>
</build>

四,text.java

1,作用是什么

测试类,测试代码

2,可以使用依赖,进行代码的操作

xml 复制代码
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

可以不用main函数可以直接运行方法

五,maven的生命周期

1,maven生命周期的依赖

2,依赖的作用

  • clean

    • 清理项目构建产物,删除target目录(编译、打包生成的文件均存储于此),为新的构建流程重置环境。
  • validate

    • 验证项目配置的合法性(如pom.xml格式、依赖完整性),确保后续构建流程可正常执行。
  • compile

    • 编译项目主代码(src/main/java目录下的 Java 文件),将其转换为字节码文件,输出到target/classes目录。
  • test

    • 编译并执行测试代码(src/test/java目录下的测试类),需依赖 JUnit 等测试框架,验证主代码功能的正确性。
  • package

    • 将编译后的代码打包为指定格式的产物(默认 Java 项目生成jar包,Web 项目生成war包),产物存储于target目录。
  • verify

    • 对打包产物进行验证(如检查测试报告、代码质量等),确保产物符合项目规范。
  • install

    • 将打包产物安装到本地 Maven 仓库,供本地其他 Maven 项目通过 GAV 坐标依赖引用。
  • site

    • 生成项目文档站点(包含项目信息、测试报告、依赖说明等),便于项目的文档管理。
  • deploy

    • 将打包产物部署到远程仓库(私服),供团队其他成员或其他项目共享使用。

3,依赖分为三种

相关推荐
cyforkk2 小时前
14、Java 基础硬核复习:数据结构与集合源码的核心逻辑与面试考点
java·数据结构·面试
零度@2 小时前
专为 Java 开发者 整理的《Python编程:从入门到实践》前8章核心内容
java·开发语言·windows·python
一嘴一个橘子2 小时前
idea Could not autowire. No beans of ‘xxxMapper‘ type found
java
海边的Kurisu2 小时前
苍穹外卖日记 | Day9 用户端历史订单模块、商家端订单管理模块、用户下单功能优化
java·苍穹外卖
nbsaas-boot2 小时前
架构设计怎么做:一套可复用、可落地的方法论
java·开发语言·微服务
猿来是泥鸭2 小时前
Spring IOC 实现机制
java
武超杰2 小时前
深入理解JDBC:Java数据库连接的核心技术与实践
java·开发语言·数据库·jdbc
h7ml2 小时前
企业微信 API 与内部系统集成时的 OAuth2.0 安全上下文传递机制
java·安全·企业微信
Konata122 小时前
实现进阶的C/S通信
java·开发语言