У меня есть две зависимости, artifact-a и artifact-b. Каждый из них зависит от другой версии artifact-c. Как я могу затенять артефакты для использования этих разных зависимостей? (Или же иметь артефакт-а использовать тенистую зависимость и артефакт-б использовать нормальный.Как может Maven Shade Plugin перемещать несколько версий транзитивной зависимости?
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>2.1.0</version>
<!-- artifact-a uses version 3 of artifact-c.
How do I relocate version 3 without conflicting with version 4?
<groupId>group-c</groupId>
<artifactId>artifact-c</artifactId>
<version>3.0.0</version>
-->
</dependency>
<dependency>
<groupId>group-b</groupId>
<artifactId>artifact-b</artifactId>
<version>1.5.0</version>
<!-- artifact-b uses version 4 of artifact-c.
How do I relocate version 4 without conflicting with version 3?
<groupId>group-c</groupId>
<artifactId>artifact-c</artifactId>
<version>4.0.0</version>
-->
</dependency>
могли бы вы попробовать использовать ' группа-с: артефакт-с: *: 4.0.0 группа-с: артефакт-с: *: 3.0.0 artifactSet> 'в пределах Maven тени конфигурации. –
nullpointer
Я не думаю, что это возможно. Обычно Maven игнорирует одну из зависимостей (при анализе зависимостей она будет говорить «опущена для версии x.y.z»). Использование двух разных зависимостей, содержащих одни и те же классы, не будет работать, если вы полностью не разделили зависимости с помощью разных загрузчиков классов. – john16384
@nullpointer спасибо, но я не могу исключить любую из этих версий «c», так как «a» и «b» требуют разные версии «c». –