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

37

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

我在官网上看到过相关内容,但是并没有很清楚的理解。


一个人可以分叉线程,也可以不分叉。 - Dave Newton
4
你说的“fork a thread”是什么意思? - Tim
1个回答

58
我理解为:jar目标旨在从命令行运行(mvn source:jar),而jar-no-fork则旨在绑定到生命周期中。如果查看jar目标的docs,关键短语是“在执行自身之前调用生成源生命周期阶段”。如果您配置POM以将source:jar目标作为生命周期的一部分运行,则Maven将重新运行绑定到generate-sources及其前序的所有目标。如果您将许多插件目标绑定到验证或初始化阶段,则所有这些目标都将运行两次,从而延长构建时间。相比之下,jar-no-fork是将其附加到构建生命周期中的内容,因为它期望在generate-sources之后的某个阶段绑定,并且不会再次运行绑定目标。我通过使用-X运行Maven 3并审查运行的插件执行来验证了这种行为。

默认阶段和最低版本都在 jar-no-fork 文档的属性部分中描述。 - user944849
1
这也是我的理解,但奇怪的是 Maven 3.0.4 的超级 POM 在 release-profile 中使用 jar 目标,而不是 jar-no-fork 目标。有什么想法吗? - Puce
不知道。也许在Maven 3.0.4发布之后,jar-no-fork目标被添加到插件中。你需要检查两者的发行说明。 - user944849

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接