Part1前言
maven是最流行的项目构建系统,如果是java相关的开发,可以说是不可或缺的。虽然还有另外一个模块管理工具grade正在崛起, 不过多数公司常用的还是maven
- Maven 和 Maven的仓库
- Maven 命令和构建生命周期
- maven项目pom.xml格式文件详解
- Maven怎么做到传递依赖与排除依赖
- Maven的聚合和继承
- mvn使用实例
Maven 和 Maven的仓库
Maven仓库用来存放Maven所管理Jar包。分为两种:本地仓库 和 中央仓库
- 本地仓库:Maven本地的Jar包仓库
- 中央仓库:Maven官方提供的远程仓库,Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源Java构件
- 远程仓库: Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件

Maven 命令和构建生命周期
阶段 | 处理 | 描述 |
validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
compile | 执行编译 | 源代码编译在此阶段完成 |
test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
package | 打包 | 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |

- 当一个阶段通过 Maven 命令调用时,如
mvn compile
,该阶段之前以及包括该阶段在内的所有阶段都会被执行 - maven 还有一个clean命令,用于移除所有上一次构建生成的文件
- 在构建环境中,常使用
mvn clean deploy
命令来清除,及构建、部署项目到远程仓库中
maven项目 pom.xml 格式文件详解
Maven怎么做到传递依赖与排除依赖
- 传递依赖:如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和简洁引用的Jar包都下载到本地
- 排除依赖:如果我们只想下载直接引用的Jar包,那么需要在pom.xml中做如下配置
- 依赖冲突:若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的
- 短路优先,例如
A.jar —> B.jar —> X.jar;C.jar —> X.jar
,优先使用短路径的X.jar - 声明优先;若引用路径长度相同时,在pom.xml中谁先被声明
Maven的聚合和继承
- 同时配置多个运行项目称之聚合,聚合的项目有一个父类pom.xml文件,而各个项目也有属于自己的pom.xml
- 在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom.xml中,各个子项目继承该pom即可
- 父pom.xml
mvn使用实例
Part2参考文章
- Maven 教程[1]
- 史上最全的maven的pom.xml文件详解[2]
- Maven使用详解[3]
- maven常用命令集合[4]
文章转载自公众号:潜行前行