Maven 简介

Maven 是 Apache 的开源项目管理工具,主要用于依赖管理和项目构建。

  • 依赖管理:统一管理项目所需的 Jar 包。
  • 项目管理:支持构建、编译、测试、打包、部署等全流程。

核心概念

仓库
  • 本地仓库:存储从中央仓库或私服下载的 Jar 包,默认路径为 ~/.m2/repository
  • 中央仓库:Maven 官方维护的公共仓库,包含绝大多数开源 Jar 包。
  • 私服:企业内部搭建的仓库,用于缓存中央仓库的 Jar 包或托管私有依赖。
坐标

通过 groupIdartifactIdversion 唯一标识一个依赖,示例:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>

安装与配置

  1. 下载与解压

    • 官网下载地址:https://maven.apache.org/
    • 解压到无中文、无空格的路径(如 D:\apache-maven-3.5.4)。
  2. 配置阿里云镜像
    修改 conf/settings.xml,添加以下内容:

    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>https://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    

  3. 配置本地仓库路径
    修改 settings.xml 中的 <localRepository> 标签:

    <localRepository>D:\mvn_repository</localRepository>
    

  4. 环境变量(可选)

    • 新建系统变量 MAVEN_HOME,值为 Maven 安装路径(如 D:\apache-maven-3.5.4)。
    • Path 中添加 %MAVEN_HOME%\bin
    • 验证:命令行执行 mvn -v 查看版本信息。

IDE 集成(IntelliJ IDEA)

局部集成
  • 路径:File > Settings > Build, Execution, Deployment > Build Tools > Maven
  • 配置 Maven home pathUser settings file 为本地路径。
全局集成
  • 同上,但配置会应用到所有项目。
项目结构
src/
  |-main/
      |-java/       # Java 源代码
      |-resources/  # 配置文件
  |-test/
      |-java/       # 测试代码
target/             # 编译输出目录
pom.xml             # 项目配置和依赖定义

依赖管理

  • 添加依赖:在 pom.xml<dependencies> 标签内声明坐标。
  • 下载失败处理
    • 删除 xxx.jar.lastUpdated 文件后重新下载。
    • 手动从其他仓库复制 Jar 包到本地仓库。

生命周期

  • 清理周期clean 删除 target 目录。
  • 默认周期
    • compile 编译源代码
    • test 运行单元测试
    • package 打包为 Jar/War
    • install 安装到本地仓库
    • deploy 发布到远程仓库

依赖冲突解决

  1. 第一声明优先:调整依赖声明顺序。
  2. 路径近者优先:直接引用需要的版本。
  3. 排除依赖:通过 <exclusions> 排除冲突的传递性依赖。
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.8.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

  4. 版本锁定:使用 <dependencyManagement> 统一管理版本。
    <properties>
        <spring.version>5.2.0.RELEASE</spring.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

依赖范围(Scope)

Scope 主代码 测试代码 打包 示例
compile Spring
test JUnit
runtime JDBC 驱动
provided Servlet API

模块化(聚合与继承)

  • 父模块:打包类型为 pom,管理公共依赖和插件。
    <packaging>pom</packaging>
    <modules>
        <module>maven_dao</module>
        <module>maven_service</module>
        <module>maven_web</module>
    </modules>
    

  • 子模块:通过 <parent> 标签继承父模块配置。

通过模块化可实现依赖复用和项目结构清晰化。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐