1

現在、依存関係の管理に Ivy を使用しています。そして、推移的な依存関係のために、同じjarファイルを別の名前で取得するという問題に遭遇することがよくあります。

例:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
</dependency>

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-javamail_1.4_spec</artifactId>
    <version>1.4</version>
</dependency>

Mavenも試してみようと思っています。

Ivy または Maven でこれらの同一のアーティファクトを排除するためのベスト プラクティスはありますか?

4

2 に答える 2

1

アーティファクトのグローバルな除外は、Mavenが「SpecsJAR」(別名仮想依存関係)を処理するためのより良い方法を提供するまで、この種の状況(異なる名前の同じアーティファクト)に対処するための優れた機能です。

残念ながら、このような機能は現在利用できません(MNG-3196およびMNG-1977を参照)。そのため、依存関係の除外を宣言して、不要なアーティファクトを依存関係から除外し、推移的にプルする必要があります。Mavenでは、これはpom<exclusions>のセクションの下にタグを追加することによって行われます。<dependency>

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>

がすべてのプロジェクトで使用されている場合Project-A-1.0.jar、考えられる解決策の1つは、企業POMのセクションでこれを宣言して、dependencyManagement繰り返さないようにすることです。

于 2010-05-04T07:57:05.140 に答える
0

この特定の例では、javax を選択します。また、異なる名前で提供されるアーティファクトがある場合は、Maven で除外を使用できます。これがアイビーで可能かどうかはわかりません。

于 2010-05-04T06:52:11.210 に答える