LOADING

加载过慢请开启缓存 浏览器默认开启

maven项目构建加速(一)命令参数篇

2022/9/12 教程 maven

比如我们的项目结构如下,下面将使用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> 手动选择需要构建的项目,项目间以逗号分隔,可以是[group]:artifactId形式,也可以是相对路径
-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参数