4

「mvn install」コマンドと jar:jar プラグインの使用の違いは何ですか?

「インストール」がjarを構築しているように見えることは明らかなので、jar:jarプラグインの必要性は何なのか疑問に思っています。

4

3 に答える 3

18

Maven コマンドラインで指定できるものには、次の 2 種類があります。

  • :ライフサイクル フェーズ (これらには文字は含まれません)

  • プラグインの目標 (これらには少なくとも 1 つの:文字が含まれます。プラグインをどの程度完全に指定するかに応じて、short-name:goalまたはgroupId:artifactId:goalまたはになりますgroupId:artifactId:version:goal)

デフォルト、クリーン、サイトの3 つのライフサイクルがあります。各ライフサイクルは、一連のフェーズで構成されています。ライフサイクルでフェーズを指定すると、Maven は指定されたフェーズまでのそのライフサイクルのすべてのフェーズを順番に実行します。

プラグイン ゴールを指定すると、そのプラグイン ゴールが呼び出され、そのプラグイン ゴールのみが呼び出されます。

Maven には、ライフサイクル フェーズへのプラグイン バインディングのデフォルト セットを定義するパッケージングの概念があります。たとえば、パッケージング (要素が含まれていない限りデフォルト) は、デフォルトでフェーズにバインドされ、フェーズにバインドされます。jarpom.xml<packaging>...</packaging>jar:jarpackageinstall:installinstall

したがって、入力すると

$ mvn package

Maven は、(ライフサイクルから、または pom でプラグイン実行を指定することによって) バインドされたプラグインを実行しながら、ライフサイクル フェーズ全体を実行します。

入力するとき

$ mvn jar:jar

Maven は、jar プラグインの jar ゴールを実行するだけです。

ライフサイクルは、100 回中 99 回、使用したいものです。

通常、プラグイン ゴールを直接呼び出したい場合は次のとおりです。

  • jetty:runWeb アプリケーション サーバーを起動するには

  • surefire:testテストをすばやく再実行する (通常は-Dtest=...特定のテストを指定する)

  • release:prepare release:performコードをリリースする

  • versions:...バージョン関連のものの更新またはクエリを実行するため。versions:display-plugin-updates

  • ship:shipまたはcargo:deployer-deploy、構築したアーティファクトをホスティング環境にプッシュ (出荷) する

于 2013-01-14T22:55:26.700 に答える
2

installアーティファクトをローカル (マシン上の) Maven リポジトリに配置しますが、配置jar:jarしません。ライブラリを呼び出しjar:jarて、別のプロジェクトでそのライブラリを参照しようとすると、ローカル リポジトリにはありません。

mvn packageまた、 を使用するよりも、パッケージングを行うよりクリーンな方法であることに注意してくださいjar:jar

于 2013-01-14T22:46:55.703 に答える
2

mvn installコマンドは、インストールフェーズまでのMaven ライフサイクルを「実行」します。これは、以前のすべてのフェーズ (パッケージフェーズを含む) が実行されることを意味します。

単純な Maven jar プロジェクトでは、パッケージ フェーズは maven-jar-plugin にバインドされます。したがって、実行mvn installはある時点で実行されますjar:jar

于 2013-01-14T23:03:26.710 に答える