maven增量编译的思考

今天有人问maven增量编译的事情, 思考了一下, 有下面心得:

1. Maven缺省的就是增量编译.
2. Java的项目通常正式的build不能用增量编译, 原因很简单, maven和ant都不支持"减量编译": 如果删除.java文件, 编译结果.class文件将不会被删除, 而java支持运行期动态加载, 这样被删除的文件的class也可能在运行时被使用, 结果可能是灾难性的. 所以我们的build都是用"mvn clean install", 先清除再编译. 不过如果确定没有删除文件或者被删除文件的.class文件不会被使用, 我个人觉得可以用增量编译(mvn install).
3. 如果想加快编译, 可以考虑这几个方面:
1) 忽略maven生命周期中的某些阶段。比如:mvn install -Dmaven.test.skip=true 跳过TestCase检验,否则在install时会运行TestCase测试;
2) 修改pom文件来删减maven plugin的执行。 比如从pom中去掉打source jar的plugin, 这样最后build的结果不包含源代码。
3) 冒险用增量编译。 过去一年里我们项目影响增量编译的删掉的文件大概10多个,主要源于需求变化和代码重构。和一年365天相比,这个概率还是比较低的。

你可能感兴趣的:(maven)