Maven编译加速

多线程

参考这个文章:https://www.cnblogs.com/AmilyWilly/p/7613644.html

然后自己做了一些测试,发现开启多线程编译,编译速度提升非常大:

time mvn clean package
real 1m41.934s
user 0m47.948s
sys 0m3.857s

time mvn clean package
real 1m10.843s
user 0m38.914s
sys 0m3.187s

mvn clean compile
real 0m20.800s
user 0m25.603s
sys 0m2.121s

time mvn clean package -Dmaven.compile.fork=true
real 0m21.038s
user 0m34.705s
sys 0m3.120s

time mvn clean compile -Dmaven.compile.fork=true
real 0m8.664s
user 0m20.411s
sys 0m1.503s

结论:

如只是想编译运行,不打包(jar/war),采用mvn clean compile -Dmaven.compile.fork=true 命令,该命令只生成文件目录。开发阶段一般用这个,将编译+部署写成一个脚本,速度最快。

如果要打包,或者同时编译多个项目,采用mvn clean package -Dmaven.compile.fork=true 命令,该命令会生成war/jar文件

2018.08.18:

我在80.195测试服务器上,编译kiv项目,发现开启多线程和不开启多线程,时间差别不大;不过采用compile替代package,提升很大;而不用clean,也会额外带来很大的提升:

time mvn clean package
real 0m27.137s
user 0m38.038s
sys 0m2.506s

time mvn clean package -Dmaven.compile.fork=true
real 0m25.081s
user 0m36.834s
sys 0m2.616s

time mvn clean compile
real 0m11.320s
user 0m23.395s
sys 0m1.179s

time mvn compile
real 0m4.775s
user 0m8.757s
sys 0m0.608s

内存

网上看到别人的一个帖子,通过增加JVM内存也能提升编译速度:

以前一直工程较少,编译maven时一直没关注过速度。现在依赖工程较多,maven编译越来越慢。通过加到java编译内存可以提高编译速度

比如设置成800M速度从原来的20分钟缩短到3分钟

-Xms800m -Xmx800m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

这个我没试过,待验证。

知识点

maven package 和 install 区别

1.install:打包好的 jar 包会安装到本地的 maven 仓库中,使用的配置是默认的配置,供其他项目使用。
2.package 指定参数打包:clean package -Dmaven.test.skip=true -Pprod 这种方式就是指定了打包的参数,并且打包后的文件存放到项目的 target 目录下。

最快的一键部署脚本(待修改)

1
2
3
4
5
6
7
mvn compile   -Dmaven.compile.fork=true
kill -9 $(pgrep -f "tomcat")

rm -rf /usr/local/tomcat/webapps/infomine/*
cp /var/www/infomine/target/infomine-1.war /usr/local/tomcat/webapps/infomine/infomine.war
echo "" > /usr/local/tomcat/logs/catalina.out
/usr/local/tomcat/bin/catalina.sh start