1. ホーム
  2. maven

[解決済み] Mavenのゴールとフェーズ、その違いは何ですか?

2022-03-15 18:04:07

質問

Mavenのゴールとフェーズの違い/関係は何ですか?どのように互いに関連していますか?

どのように解決するのですか?

目標はフェーズで実行され、目標が実行される順番を決定するのに役立ちます。 このことを最もよく理解できるのは デフォルトのMavenライフサイクルバインディング は、デフォルトでどのゴールがどのフェーズで実行されるかを示しています。 その compile フェーズのゴールは常に test フェーズゴールの前に必ず実行されます。 package フェーズ・ゴールなど。

Mavenを実行するときに、ゴールまたはフェーズを指定できることが、混乱を悪化させている一因です。 フェーズを指定すると、Mavenは指定したフェーズまでのすべてのフェーズを順番に実行し(たとえば、packageを指定すると、最初にコンパイルフェーズ、次にテストフェーズ、最後にパッケージフェーズを実行します)、各フェーズではそのフェーズに関連するすべてのゴールを実行します。

Mavenビルドファイルでプラグイン実行を作成し、ゴールだけを指定すると、そのゴールは指定されたデフォルトのフェーズにバインドされます。 例えば jaxb:xjc ゴールはデフォルトで generate-resources フェーズになります。 ただし、実行を指定するときに、そのゴールに対するフェーズも明示的に指定することができます。

Mavenの実行時にゴールを指定すると、そのゴールだけが実行されます。 つまり jar:jar のみが実行されます。 jar:jar ゴールを使って、コードをjarにパッケージングします。 もし事前にコンパイルゴールを実行していなかったり、 コンパイルしたコードを他の方法で準備していなかったりした場合は、 失敗する可能性が非常に高くなります。