Maven源插件jar和jar无叉目标之间的区别?

Maven源插件jar和jar无叉目标之间的区别?,maven,jar,maven-plugin,Maven,Jar,Maven Plugin,你能详细解释一下jar和jar无叉目标的区别吗 我从官方网站上看到了它,但对此我没有一个清晰的概念。我的解释是:jar目标是从命令行运行的(mvn source:jar),而jar no fork是绑定到生命周期的 如果您查看jar目标,关键短语是“在执行自身之前调用生命周期阶段的执行生成源”。如果您将POM配置为作为生命周期的一部分运行source:jar目标,Maven将重新运行所有绑定到生成源代码及其前身的目标。如果有许多插件目标绑定到验证或初始化阶段,那么所有这些阶段都将运行两次,从而延

你能详细解释一下jar和jar无叉目标的区别吗


我从官方网站上看到了它,但对此我没有一个清晰的概念。

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

如果您查看
jar
目标,关键短语是“在执行自身之前调用生命周期阶段的执行生成源”。如果您将POM配置为作为生命周期的一部分运行
source:jar
目标,Maven将重新运行所有绑定到
生成源代码及其前身的目标。如果有许多插件目标绑定到验证或初始化阶段,那么所有这些阶段都将运行两次,从而延长构建时间

相反,
jar no fork
是您附加到构建生命周期的工具,因为它期望绑定到
生成源代码之后的某个阶段,并且不会再次运行绑定的目标


我已经通过使用
-X
运行Maven 3并查看运行的插件执行来验证这种行为。

一个分叉一个线程,一个不分叉。分叉一个线程是什么意思?默认阶段和最低版本都在文档的属性部分描述。这也是我的理解,但奇怪的是,Maven 3.0.4的超级POM在发布概要文件中使用了jar目标,而不是jar no fork目标。知道为什么吗?不知道。也许在Maven 3.0.4发布后,jar no fork目标被添加到插件中。您必须检查这两个版本的发行说明。