Maven是否支持增量构建?
如何使用Maven来支持增量构建? 某处有指南吗? (谷歌的结果令人失望)
默认情况下,Maven会逐步构建,但事实certificate,编译器插件(即javac的核心)速度非常快,每次构建新的内容都不是代码库大小合理的瓶颈,而不是与构建大型程序集或运行大型测试相比套房。 (与大多数语言一样,Java的编译速度比C ++快得多。)
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)
更多信息
- 团队文档 – Takari生命周期
- Java增量编译
如果您的项目有数百个模块,则可以使用maven-incremental构建插件 。 它节省了大量时间。
我无法弄清楚驱动Maven社区的动态,但对于对构建过程进行细粒度控制并不友好。
无论如何,在挖掘之后我找到了一个对我有用的答案: http : //www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files
请注意,将值设置为false
会让我感到困惑,但这里给出了解释: https : //stackoverflow.com/a/19653164/409638
为方便起见,这里转载:
org.apache.maven.plugins maven-compiler-plugin 3.2 1.6 1.6 false
这是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支持使用命令行参数-pl
, -am
和-amd
构建多模块项目的子集,以指定要构建的模块,还分别构建依赖关系以及构建依赖项。 它也只会在任何给定模块中编译已更改的源文件(实际上不是mavenfunction,而是javacfunction)。