rob*_*ert 10
我无法弄清楚驱动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>
Run Code Online (Sandbox Code Playgroud)
这是useIncrementalCompilation一组到false这里是关键.
我可以确认,当我运行我的构建时,我已经离开:
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 114 source files to /home/vagrant/workspace/splat/target/classes
Run Code Online (Sandbox Code Playgroud)
至
[INFO] Compiling 1 source file to /home/vagrant/workspace/splat/target/classes
Run Code Online (Sandbox Code Playgroud)
这削减了我的增量构建的几秒钟.现在我所要做的就是弄清楚如何禁用所有其他不必要的错误,这会减慢我的编辑/评估周期......
更新:真正的增量构建支持 - 类似于 Gradle 中的支持 - 已在 Maven 代码库中实现。介绍视频在这里: https: //youtu.be/DEQG4CNFMFE
Update2:maven构建缓存扩展正式发布 - https://github.com/apache/maven-build-cache-extension
亲切的问候亚历克斯
默认情况下,Maven逐步构建,但事实证明编译器插件(即javac的核心)是如此之快以至于每次构建新鲜都不是代码库大小合理的瓶颈,而不是与构建大型程序集或运行大型测试相比套房.(与大多数语言一样,Java的编译速度比C++快得多.)
是的,现在可以感谢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)
Run Code Online (Sandbox Code Playgroud)