Maven源插件jar和jar-no-fork目标之间的区别?

Tim*_*Tim 24 jar maven-plugin maven

你能否详细解释一下jar和jar-no-fork目标之间的区别?

我从官方网站上看到它,但我无法清楚地了解这一点.

use*_*849 39

我的解释:jar目标是从命令行(mvn source:jar)运行,jar-no-fork意味着绑定到生命周期.

如果您查看目标文档,jar关键短语是"在执行自身之前调用生命周期阶段生成源的执行".如果将POM配置source:jar为在生命周期中运行目标,Maven将重新运行绑定到的所有目标generate-sources及其前任.如果你有很多插件目标绑定到验证或初始化阶段,那么所有这些目标都将运行两次,从而延长了构建时间.

相比之下,jar-no-fork您附加到构建生命周期的是因为它希望在某个地方绑定到某个阶段,generate-sources并且不会再次运行绑定目标.

我通过运行Maven 3 -X并查看运行的插件执行来验证此行为.

  • 这也是我的理解,但奇怪的是,Maven 3.0.4 的超级 POM 使用 jar 目标,而不是发布配置文件中的 jar-no-fork 目标。知道为什么吗? (2认同)