java Maven支持增量构建吗?

nkoocmlb  于 2023-01-04  发布在  Java
关注(0)|答案(6)|浏览(202)

如何使用Maven来支持增量构建?哪里有指南吗?(谷歌的热门结果令人失望)

g9icjywg

g9icjywg1#

我不太清楚驱动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

这已经削减了几秒钟的增量构建。现在我要做的就是找出如何禁用所有其他不必要的cruft,这些cruft正在减慢我的编辑/评估周期...

slsn1g29

slsn1g292#

如果你的项目有数百个模块,你可以使用maven-incremental build plugin,它节省了很多时间。

uidvcgyl

uidvcgyl3#

默认情况下,Maven是增量构建的,但事实证明,编译器插件(即javac的核心)速度非常快,与构建大型程序集或运行大型测试套件相比,每次构建新的代码并不是一个瓶颈(Java和大多数语言一样,编译速度比C++快得多)。

sr4lhrrt

sr4lhrrt4#

Takari 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)

更多信息

hjzp0vay

hjzp0vay5#

Maven支持使用命令行参数-pl-am-amd来分别指定要构建的模块、构建依赖项和构建依赖项,从而构建多模块项目的子集。它还将仅编译任何给定模块中更改的源文件(不像javac功能那样真正是Maven功能)。

ruarlubt

ruarlubt6#

更新:真正的增量构建支持-类似于Gradle中的支持-已在Maven代码库中实现。https://youtu.be/DEQG4CNFMFE
Update 2:maven构建缓存扩展正式发布-https://github.com/apache/maven-build-cache-extension
问候Alex

相关问题