自定义 Maven 插件可以使用来自核心 Maven 的增量构建支持,还是最好自己完全实现,在输入上使用 SHA1 哈希等?
注意到例如 /target/maven-status/maven-compiler-plugin/compile/default-compile 与 createdFiles.lst 和 inputFiles.lst,因此认为现有的自定义代码生成器 Maven 插件,它读取一些文件作为输入,生成一些输出,是否可以更改为正确使用 Maven 插件 API 进行增量构建?不清楚该插件代码具体需要做哪些不同于现在的操作才能使其变得增量。似乎没有关于此的任何文档?
现有代码确实使用了例如 org.sonatype.plexus.build.incremental.BuildContext.hasDelta(File),但是在 org.sonatype.plexus.build.incremental.DefaultBuildContext.hasDelta(File) 中使用“return true”,这并不奇怪不太好用... ;-) 这不是在 Maven 中实现的,还是可以进行不同的配置?这需要 takari-lifecycle-plugin 吗?(对于我要求的特定插件,这将是一个问题,因为使用 takari-jar 而不是普通的 JAR 会干扰其他插件。)
了解自定义 Maven 插件可能必须与 Maven 核心 API 交互,以公开其输入文件之间依赖关系的概念。对于这个特定的自定义 Maven 插件,一些输入是从项目类路径的依赖项中读取的。增量支持也能处理这个问题吗?
了解现有的 Maven 插件,例如 maven-compiler-plugin,正在努力应对增量构建(à la Gradle);请参阅 [1]、[2] 和 [3],因此此 Q 专门用于了解如何扩展自定义 Maven 插件以支持增量构建。
[1] http://takari.io/2014/10/16/incremental-compilation.html
[2] http://takari.io/book/40-lifecycle.html
[3] Maven 是否支持增量构建?