Как исключить циклические устаревшие зависимости в maven, не уничтожая их полностью? - PullRequest
1 голос
/ 03 марта 2011

У меня есть случай, когда у меня есть следующие циклические зависимости в Maven:

JAR A version 1.1 depends on JAR B version 1.0
JAR B version 1.1 depends on JAR A version 1.0

По какой-то причине, которую я не знаю, Maven приносит все 4 JAR-файла: A 1.0, A 1.1, B 1.0 и B 1.1, что приводит к конфликту пути к классам.

Это действительно отстой. Я уже прошу разработчиков обоих JAR-файлов исправить это, однако я не могу просто сидеть и ждать того дня, когда они решат это исправить.

Я пробовал это:

<dependency>
    <groupId>groupA</groupId>
    <artifactId>artifactA</artifactId>
    <version>1.1</version>
    <type>pom</type>
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <groupId>groupB</groupId>
            <artifactId>artifactB</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>groupB</groupId>
    <artifactId>artifactB</artifactId>
    <version>1.1</version>
    <type>pom</type>
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <groupId>groupA</groupId>
            <artifactId>artifactA</artifactId>
        </exclusion>
    </exclusions>
</dependency>

В результате maven исключает все JAR-файлы, как если бы не было добавлено никакой зависимости, и проект не компилируется, поскольку отсутствуют классы.

Итак, кроме как попросить обоих разработчиков JAR решить эту проблему, что я могу сделать? Как я могу импортировать обе новые зависимости, оставляя при этом обе старые?

1 Ответ

1 голос
/ 03 марта 2011

Прагматичным решением было бы переопределить нежелательные зависимости, как указано, например:

<dependency>
  <groupId>groupA</groupId>
  <artifactId>artifactA</artifactId>
  <version>1.0</version>
  <scope>provided</scope>
</dependency>

Я не особенно люблю использовать предоставленный таким образом, так как он оставляет зависимость во время компиляции и может привести к нежелательным зависимостям компиляции, но я не вижу другого пути в вашем случае; (.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...