8

私を許して。私はMavenの初心者です。

これが私のMavenプロジェクトディレクトリです:

project/
    pom.xml
    moduleA/
    moduleB/
        sub-moduleA/
        sub-moduleB/
        sub-moduleC/
    moduleC/

もちろん、各モジュールとサブモジュール内には、独自のがありpom.xmlます。また、この例でmoduleBは、に依存しmoduleAmoduleAに依存しmoduleCます。Mavenには複数のフェーズがあることを知っていますが、各フェーズを一度に1つずつ実行しますか、それとも各モジュールを一度に1つずつ実行しますか。現在、私が関わっている3つのフェーズは、、、compileおよびpackageですinstall

例えば:

注文1でそれを行いますか:

compile moduleC
compile moduleA
compile moduleB
package moduleC
package moduleA
package moduleB
install moduleC
install moduleA
install moduleB

またはそれは注文2でそれを行いますか:

compile moduleC
package moduleC
install moduleC
compile moduleA
package moduleA
install moduleA
compile moduleB
package moduleB
install moduleB

それとも、まったく異なる順序で実行するのでしょうか、それとも、Mavenでの理解が完全にずれているのでしょうか。

Maven2.2.1を実行しています。ありがとう!

4

3 に答える 3

9

順序2:reactorはすべてのプロジェクトを検出し、ソートされたリストを作成してプロジェクトを正しい順序でビルドし(依存関係を尊重)、この順序に従ってプロジェクトをビルドします。

AがBに依存している場合、Bが完全に処理されていないと、Aの構築を開始できません。

于 2013-01-24T15:57:19.880 に答える
1

ずる賢いという意味ではありませんが、Mavenの出力に慣れておく必要があります。それは本当にそれが何をしているのかを正確に教えてくれます。モジュールをビルドする順序を正確に示し、次に、各モジュールをビルドする間に進行しているフェーズ/実行を正確に示します。

たとえば、これは簡略化された作成済みレポートです。まず、その建物のプロジェクトを教えてくれます。次に、フェーズごとに、どのmojo実行が発生しているかについてのレポートがあります。実行行は3つで開始および終了することに注意してください---(これはMaven3です。Maven2では異なります)。そしてそれがあなたに言うことに注意してください:

  1. プラグインの名前、例:maven-clean-plugin
  2. プラグインのバージョン
  3. 実行されているプラ​​グインの目標の名前
  4. 実行の名前、例えばdefault-clean

ライフサイクルフェーズのデフォルトのバインディングであるすべての実行、つまり組み込みの実行にはdefault-clean、フェーズが識別される場所のような名前と、それがデフォルトであるという事実があることに注意してください。

[INFO] ------------------------------------------------------------------------
[INFO] Building common-utilities 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ common ---

   SNIP

[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ common ---

   SNIP

[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ common ---

   SNIP

[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ common ---
于 2013-01-24T18:12:09.543 に答える
0

まず、2ではなくMaven 3を使用することをお勧めします。後者から前者への移行は非常に簡単で(何も変更せずに実行できる場合もあります)、パフォーマンスが大幅に向上します。

また、ビルドの順序については、マルチモジュールプロジェクトの処理を担当するシステムであるMavenReactorについて少しお読みください。

于 2013-01-24T14:42:57.657 に答える