Java Maven的增量编译

博客首页 » Java Maven的增量编译

发布于 22 Jun 2014 15:16
标签 blog
maven增量编译的思考

博客分类: 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天相比,这个概率还是比较低的。

分享到:
Archiva server mirroring configuration | replaceAll()中正则表达式的应用
2011-10-19 18:07浏览 1216评论(3)分类:开源软件相关推荐
评论

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

2 楼 soho00147 2011-11-17
如果没有变动则 maven install

使用时,直接对整个项目maven install 就可以了

3 楼 soho00147 2011-11-17
我的想法是在这个插件的基础上编写更加强大的插件,扫描目录时发现有变动时,对变动部分在jar包或者war包中做更新,删除或添加操作,并编译新文件和修改过的文件打入jar包或者war包。


本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • Java Maven的增量编译

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License