4

すべてのプロジェクトに、次のように定義された親 pom があるプロジェクトがあります。

<parent>
    <groupId>MyProject</groupId>
    <artifactId>MyApp</artifactId>
    <version>1.0</version>
</parent>

ただし、この親 pom は modules 要素でモジュールを指定しません。

そのため、コマンドを実行しmvn install -f parent/pom.xmlても何もしません。

すべてのpomが構築されるように、プロジェクト全体を順番に構築できる他の方法はありますか?

「順番に」とは、「依存関係の順に構築された」ことを意味します。いくつかのプロジェクトは他のプロジェクトに依存しているため、各プロジェクトをアルファベット順にビルドすることはできません。

4

2 に答える 2

13

リアクター pom (<modules>要素を持つpom で、<packaging>として定義されているpom) がある場合、モジュールは依存関係の順序でビルドされます。この順序付けは、pom でモジュールが指定されている順序に関係なく行われます。

これにアプローチするには、いくつかの方法があります。

オプション1

リアクターのポンは、親のポンと同じポンである必要はありません。したがって、次のことができます。

project/pom.xml          # Reactor pom with <modules> element
project/parent/pom.xml   # Parent pom
project/module-a/pom.xml # Some module 'a'
project/module-b/pom.xml # Some module 'b'

この場合、リアクター pom には以下が含まれます。

<modules>
  <module>parent</module>
  <module>module-a</module>
  <module>module-b</module>
</modules>

mvn install最上位で実行すると、親 pom がビルドされ、2 つのモジュールが依存関係の順序でビルドされます。

オプション 2

親 pom をディレクトリの上に移動し、それを親 pom とリアクター pom の両方として使用すると、プロジェクトは次のようになります。

project/pom.xml          # Parent/Reactor pom with <modules> element
project/module-a/pom.xml # Some module 'a'
project/module-b/pom.xml # Some module 'b'

その中のモジュールセクションは次のようになります

<modules>
  <module>module-a</module>
  <module>module-b</module>
</modules>

繰り返しmvn installますが、最上位で実行すると、親の pom がビルドされ、2 つのモジュールが依存関係の順序でビルドされます。

オプション 3

親の pom をそのままにして、modules セクションを追加します。

<modules>
  <module>../module-a</module>
  <module>../module-b</module>
</modules>

この場合、 mvn install -f parent/pom.xml を実行すると、親 pom がビルドされ、2 つのモジュールが依存関係の順序でビルドされます。

結論

私は通常、オプション 2 を使用します。これは、maven 自体で最も使用されるパターンであり、広く理解され、テストされている「打ち負かされた道」から離れすぎないようにしています。

詳細については、「複数のモジュールを使用するためのガイド」を参照してください。

于 2012-11-14T17:45:30.537 に答える
1

ビルド中に自動的にプロジェクト間の依存関係を解決する方法は他にありません。

依存関係を解決するためにできることは、ビルドを実行する必要がある順序を指定することです。これを行うには、親 POM にモジュール セクションを作成します。

    <modules>
      <module>Proj A to Build/module>
      <module>Proj B dependent or Proj A</module>
    </modules>
于 2012-11-14T17:07:38.343 に答える