比如我们的项目结构如下,下面将使用maven自带的命令参数对该项目构建进行优化。本教程中仅使用了部分用于加速构建的maven参数,更多命令参数请参考官方文档 Maven CLI Options Reference。
parent
├─childA(model层)
│ └─pom.xml(jar)
├─childB(service层)
│ └─pom.xml(jar)
├─childC(web层)
│ └─pom.xml(war)
└─pom.xml(pom)
一、指定模块构建
maven构建命令如maven install
默认会构建当前项目中的所有模块,参数-pl
能指定要构建的模块,一般配合-am
参数一起使用。参数的作用如下:
参数 | 作用 |
---|---|
-pl,--projects <arg> |
手动选择需要构建的项目,项目间以逗号分隔, |
-am,--also-make |
构建指定模块,同时构建指定模块依赖的其他模块 |
例子:
例子1:对parent、childB、childA进行构建,并安装到本地maven仓库中,childC将不被构建。
mvn clean install -pl childB -am
注意:在IntelliJ IDEA中,在子模块中点击右键-》maven-》Run Maven-》install
,这个操作与使用命令mvn install - pl <module> -am
效果不同。前者在还没有将整个项目install的情况下,可能会因找不到依赖而报错。
二、跳过测试
跳过测试有两种,-DskipTests
和-Dmaven.test.skip=true
区别如下:
参数 | 作用 |
---|---|
-DskipTests | 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 |
-Dmaven.test.skip=true | 不执行测试用例,也不编译测试用例类 |
例子:
例子1:将跳过当前项目所有模块中的的测试用例的执行
mvn clean install -DskipTests
例子2:跳过当前项目所有模块中的的测试用例的执行,并且不会编译测试用例的类
mvn clean install -Dmaven.test.skip=true
在IntelliJ IDEA中跳过测试,作用等同于-DskipTests
参数
如需跳过指定模块的测试用例,请参考官方文档 Skipping Tests
三、开启离线模式
默认情况下,maven构建时会定期检查SNAPSHOT版本依赖在远程仓库中的有无更新,如果可以确定没有更新可以添加-o
参数,来跳过此检查。参数作用如下:
参数 | 作用 |
---|---|
-o,–offline | 运行offline模式,不联网进行依赖更新 |
例子:
例子1:开启离线模式
mvn clean install -o
在IntelliJ IDEA中开启离线模式,作用等同于-o
参数
四、多线程构建
maven从3.x版本开始支持多线程构建项目,不过需要手动开启。官方宣称大约20-50% 的速度提升,具体还要看项目结构、项目规模等因素。开启多线程构建前,还应评估兼容性,maven核心的功能都是支持多线程的,但是个别第三方maven插件可能不是线程安全的,详情见Parallel builds in Maven 3。开启多线程的命令参数作用如下:
参数 | 作用 |
---|---|
-Dmaven.compile.fork=true | 开启多线程编译 |
-T,–threads |
线程数, -T 4 是直接指定4线程 -T 1C 表示CPU线程的倍数 |
例子:
例子1:开启四线程进行并发构建
mvn clean install -Dmaven.compile.fork=true -T 4
在IntelliJ IDEA中开启多线程构建,作用等同于-Dmaven.compile.fork=true -T 4
参数