如何使用Maven支持增量构建?有指南吗?(谷歌的前几个结果令人失望)
我无法完全理解Maven社区驱动力的动态,但它并不支持对构建过程进行细粒度控制。
无论如何,在搜寻后,我在这里找到了一个适合我的答案:http://www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files
请注意,将该值设置为false
起初让我感到困惑,但在https://dev59.com/AmQn5IYBdhLWcg3wRVZs#19653164中有解释。
以下是方便起见复制的解释:
<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
这使得我的增量构建少了几秒钟。现在我需要想办法禁用其他不必要的东西,以加快我的编辑/评估循环速度...
如果您的项目有数百个模块,您可以使用maven增量构建插件。它可以节省很多时间。
现在,由于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)
Maven支持使用命令行参数-pl
、-am
和-amd
构建多模块项目的子集,分别用于指定要构建的模块、构建依赖模块和构建依赖模块。此外,它还会仅编译给定模块中已更改的源文件(实际上不是Maven的功能,而是javac的功能)。