最近在开发测试中,发现有些同事mvn编译打包自己负责模块,都需要花费很长时间,要等几分钟。
了解情况后,发现编译打包都使用命令:mvn clean package -Dmaven.test.skip=true,对整个工程的全部代码进行编译打包,导致花费很久。
为了提高效率,最近拿了阿里的sentinel开源代码给同事做示例(sentinel是阿里已经开源的一个很好可以实现的限流、熔断和隔离等功能的安全处理框架),给出如何对其中一个module进行编译打包
1、使用针对某个module打包命令
例如对sentinel-dashboard这个module编译打包命令为:
mvn clean package -Dmaven.test.skip=true -pl com.alibaba.csp:sentinel-dashboard -am
mvn clean package:清除打包命令
-Dmaven.test.skip=true:测试用例不执行
-pl:指定打包的模块,可以用路径也可以用坐标,如果父项目同时是父目录,那么进入父目录下,直接“-pl 项目目录名”即可;
com.alibaba.csp:sentinel-dashboard:该模块的groupId:该模块的artifactId
-am:意味着also-make (dependency),即同时打包依赖的模块;
经过测试以上命令的执行差不多20秒
2、使用全量打包命令
mvn clean package -Dmaven.test.skip=true
执行时间超过5分钟
经过对比一目了然,因此平时大家测试编译打包时,尤其项目比较大的时候,需要哪个module就指定哪个,而不是每次都全量打包编译,可以节省大量时间。