Maven / Ivy: идентичный артефакт с другим именем в зависимости - PullRequest
1 голос
/ 04 мая 2010

В настоящее время я использую 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.

Есть ли лучшая практика по устранению этих идентичных артефактов в Айви или Мавене?

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Глобальное исключение артефактов было бы неплохой возможностью справиться с такой ситуацией - одним и тем же артефактом с разными именами - до тех пор, пока Maven не предоставит лучший способ работы с "Specs JARs" aka Virtual зависимости .

К сожалению, такая функция в настоящее время недоступна (см. MNG-3196 и MNG-1977 ), поэтому вам придется объявить исключения зависимостей для исключения нежелательный артефакт от зависимости, который тянет его транзитивно. В Maven это делается путем добавления тега <exclusions> в разделе <dependency> pom.

<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 используется во всех проектах, одним из возможных решений было бы объявить это в разделе dependencyManagement корпоративного POM, чтобы не повторяться.

0 голосов
/ 04 мая 2010

В этом конкретном примере я бы выбрал javax. И если у вас есть артефакты, которые идут под разными именами, вы можете использовать исключения в Maven. Я не знаю, возможно ли это в Айви.

...