@runzhliu
2018-01-01T12:08:28.000000Z
字数 920
阅读 2518
maven
package
参考资料
https://zeroturnaround.com/rebellabs/your-maven-build-is-slow-speed-it-up/
一般情况下 Maven
不会在你的硬件上马力全开,它会根据模块来顺序构建。当然如果你的项目的模块没有构建顺序的强制要求,可以通过设置 Maven
来并行运作。
mvn -T 4 install -- will use 4 threads
mvn -T 1C install -- will use 1 thread per available CPU core
通过设置 -DskipTests=true
跳过测试用例的步骤当然是可以节省构建时间,但是如果通过并行运行测试用例,加速构建过程,保留测试用例的运行步骤仍然是最佳的选择。
针对多模块项目,很多时候,我们只需要做增量编译,对于那些需要经常修改重新构建的模块,可以通过只构建该模块,保留其他模块,来加速构建过程。
// -pl 是告诉 Maven 只针对某个模块进行编译;-am 是会重新编译依赖该模块的其他模块
mvn install -pl $moduleName -am
所有的构建工具在工作的时候都会默认去更新依赖库,但是当你知道你的依赖库无需更新的时候,为何不直接进行离线构建呢?只需要在构建命令增加一个简单的选项 -offline
就可以实现。
Maven
作为一个 Java 项目,当然可以通过 JVM
参数来进行优化。这两个选项使得 JVM
只进行比较基础的即时编译操作。
-XX:+TieredCompilation -XX:TieredStopAtLevel=1
通常一个比较快的编译命令会长以下这个样子:
MAVEN_OPTS= -XX:+TieredCompilation -XX:TieredStopAtLevel=1
mvn -T 1C install -pl $moduleName -am —offline
对于本人平时工作而言,离线和针对指定模块构建可以明显加快我的项目的构建速度,这样更有利于开发工作的快速迭代。