`
fanrey
  • 浏览: 251930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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天相比,这个概率还是比较低的。
分享到:
评论
3 楼 soho00147 2011-11-17  
我的想法是在这个插件的基础上编写更加强大的插件,扫描目录时发现有变动时,对变动部分在jar包或者war包中做更新,删除或添加操作,并编译新文件和修改过的文件打入jar包或者war包。
2 楼 soho00147 2011-11-17  
如果没有变动则 maven install


使用时,直接对整个项目maven install 就可以了
1 楼 soho00147 2011-11-17  
可以参考这个插件,这个插件是对maven项目以module级别来编译,当发现某个module有变动时,会对这个module调用maven clean install

http://maven-incremental-build.java.net/site/index.html

这个需要将项目很好的划分成小的module。

使用时,设置repo库为   http://repo1.maven.org/maven2

相关推荐

Global site tag (gtag.js) - Google Analytics