如何使用Maven来支持增量构建?某处有指南吗? (谷歌的顶级成绩令人失望)
答案 0 :(得分:9)
我无法弄清楚驱动Maven社区的动态,但对于对构建过程进行细粒度控制并不友好。
无论如何,在挖掘之后我找到了一个对我有用的答案:http://www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files
请注意,首先将值设置为false
会使我感到困惑,但此处给出了解释:https://stackoverflow.com/a/19653164/409638
为方便起见,这里转载:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<useIncrementalCompilation>false</useIncrementalCompilation>
</configuration>
</plugin>
useIncrementalCompilation
设置为false
是关键所在。
我可以确认,当我运行我的构建时,我已经离开了:
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 114 source files to /home/vagrant/workspace/splat/target/classes
到
[INFO] Compiling 1 source file to /home/vagrant/workspace/splat/target/classes
这削减了我的增量构建的几秒钟。现在我所要做的就是弄清楚如何禁用所有其他不必要的错误,这会减慢我的编辑/评估周期...
答案 1 :(得分:6)
答案 2 :(得分:6)
如果您的项目有数百个模块,则可以使用maven-incremental build plugin。它节省了大量时间。
答案 3 :(得分:5)
是的,现在可以感谢takari-lifecycle-plugin了。看一下这个示例项目:maven-incremental-compilation
[INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation ---
[INFO] Performing incremental build
[INFO] Compiling 2 sources to /home/mariuszs/maven-incremental-compilation/target/classes
[INFO] Compiled 1 out of 2 sources (670 ms)
答案 4 :(得分:4)
Maven支持使用命令行参数-pl
,-am
和-amd
构建多模块项目的子集,以指定要构建的模块,还可以构建依赖关系并分别构建依赖项。它也只会在任何给定模块中编译已更改的源文件(实际上不是maven功能,而是javac功能)。