0

最大 4 レベルの継承を持つモジュールとサブプロジェクトを含む複雑な Maven プロジェクトがあります。さらに、一部のモジュールは同じ「サブツリー」にないモジュールに依存しており、モジュールの依存関係があるたびにバージョンを表現することを避けることができるかどうか疑問に思っています。

たとえば、私は

a
 -b
   -c
 -d
   -e

モジュールeが に依存していると仮定cすると、DRY 方法でバージョンを指定する最良の方法は何ですか?

モジュールの pom.xml 内で必要なモジュールeのバージョンを指定しないcと、ビルドが失敗します。このバージョン管理の問題を処理するスマートな方法はありますか?

4

2 に答える 2

2

groupIdとartifactIdは、Maven内の単一のプロジェクトを示しますが、そのプロジェクトのMavenが参照する必要があるバージョンを判別するには、バージョンを指定する(または親pomから継承する)必要があります。冗長に見えますが、バージョンが多い場合は特に必要です。

于 2013-01-18T13:34:40.097 に答える
1

最善の方法は、プロジェクトのルートにある依存関係管理ブロックで、適切なバージョン番号を使用してすべての成果物を次のように定義することです。

a (pom.xml)
 -b
   -c
 -d
   -e

以下を使用します。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>project</groupId>
      <artifactId>b</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>project</groupId>
      <artifactId>c</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>project</groupId>
      <artifactId>d</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>project</groupId>
      <artifactId>e</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

しかし、与えられた構造では:

a (pom.xml)
 -b
   -c
 -d
   -e

a には、モジュール (パッケージ pom)、b (パッケージ pom)、d (パッケージ pom) のリストも含める必要があります。これは、a、b、および d が依存関係として使用されることは決してないことを意味し、上記のブロックからそれらを省略できることを意味します。

于 2013-01-20T16:26:12.710 に答える