jarとjar-no-forkの目標の違いについて詳しく説明してください。
公式サイトからは見えますが、はっきりとはわかりません。
私の解釈:jar
ゴールはコマンド ラインから実行することを意図しており ( mvn source:jar
)、jar-no-fork
ライフサイクルにバインドすることを意図しています。
目標のドキュメントを見るとjar
、キー フレーズは「それ自体を実行する前に、ライフサイクル フェーズの生成ソースの実行を呼び出す」です。source:jar
ライフサイクルの一部としてゴールを実行するように POM を構成すると、Maven はバインドされたすべてのゴールとその前のゴールを再実行generate-sources
します。多くのプラグイン ゴールが検証フェーズまたは初期化フェーズにバインドされている場合、それらすべてが 2 回実行され、ビルド時間が長くなります。
対照的にjar-no-fork
、ビルド ライフサイクルにアタッチするのは、後でどこかのフェーズにバインドされることを想定しておりgenerate-sources
、バインドされたゴールを再度実行しないためです。
-X
Maven 3 を実行し、実行されるプラグインの実行を確認することで、この動作を確認しました。