如何使用Maven来支持增量构建?哪里有指南吗?(谷歌的热门结果令人失望)
g9icjywg1#
我不太清楚驱动Maven社区的动力是什么,但它并不适合对构建过程进行细粒度控制。不管怎样,经过深入调查,我找到了一个适合我的答案:http://www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files请注意,最初将值设置为false让我感到困惑,但这里给出了解释:https://stackoverflow.com/a/19653164/409638为方便起见,转载如下:
false
<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。我可以确认,当我运行我的构建版本时,我已经从:
useIncrementalCompilation
[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
这已经削减了几秒钟的增量构建。现在我要做的就是找出如何禁用所有其他不必要的cruft,这些cruft正在减慢我的编辑/评估周期...
slsn1g292#
如果你的项目有数百个模块,你可以使用maven-incremental build plugin,它节省了很多时间。
uidvcgyl3#
默认情况下,Maven是增量构建的,但事实证明,编译器插件(即javac的核心)速度非常快,与构建大型程序集或运行大型测试套件相比,每次构建新的代码并不是一个瓶颈(Java和大多数语言一样,编译速度比C++快得多)。
sr4lhrrt4#
是的,多亏了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)
hjzp0vay5#
Maven支持使用命令行参数-pl、-am和-amd来分别指定要构建的模块、构建依赖项和构建依赖项,从而构建多模块项目的子集。它还将仅编译任何给定模块中更改的源文件(不像javac功能那样真正是Maven功能)。
-pl
-am
-amd
ruarlubt6#
更新:真正的增量构建支持-类似于Gradle中的支持-已在Maven代码库中实现。https://youtu.be/DEQG4CNFMFEUpdate 2:maven构建缓存扩展正式发布-https://github.com/apache/maven-build-cache-extension问候Alex
6条答案
按热度按时间g9icjywg1#
我不太清楚驱动Maven社区的动力是什么,但它并不适合对构建过程进行细粒度控制。
不管怎样,经过深入调查,我找到了一个适合我的答案:http://www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files
请注意,最初将值设置为
false
让我感到困惑,但这里给出了解释:https://stackoverflow.com/a/19653164/409638为方便起见,转载如下:
这里的关键是将
useIncrementalCompilation
设置为false
。我可以确认,当我运行我的构建版本时,我已经从:
到
这已经削减了几秒钟的增量构建。现在我要做的就是找出如何禁用所有其他不必要的cruft,这些cruft正在减慢我的编辑/评估周期...
slsn1g292#
如果你的项目有数百个模块,你可以使用maven-incremental build plugin,它节省了很多时间。
uidvcgyl3#
默认情况下,Maven是增量构建的,但事实证明,编译器插件(即javac的核心)速度非常快,与构建大型程序集或运行大型测试套件相比,每次构建新的代码并不是一个瓶颈(Java和大多数语言一样,编译速度比C++快得多)。
sr4lhrrt4#
Takari Maven生命周期
是的,多亏了takari-lifecycle-plugin,现在才有可能。看看这个样例项目:maven-incremental-compilation
示例输出
更多信息
hjzp0vay5#
Maven支持使用命令行参数
-pl
、-am
和-amd
来分别指定要构建的模块、构建依赖项和构建依赖项,从而构建多模块项目的子集。它还将仅编译任何给定模块中更改的源文件(不像javac功能那样真正是Maven功能)。ruarlubt6#
更新:真正的增量构建支持-类似于Gradle中的支持-已在Maven代码库中实现。https://youtu.be/DEQG4CNFMFE
Update 2:maven构建缓存扩展正式发布-https://github.com/apache/maven-build-cache-extension
问候Alex