Различные версии одной и той же зависимости в Maven
У меня есть проект maven, который зависит как от Woodstox, так и от XStream. К сожалению, XStream также зависит от Woodstox, но версия немного старше, чем мне нужно. Тем временем, однако, имена артефактов из Woodstox libs изменились, поэтому maven не будет рассматривать их в нескольких версиях одного и того же артефакта. Но имена пакетов и классов одинаковы, что означает, что во время выполнения есть конфликт.
Теперь я мог бы как-то взломать старую деревянную банку из сборки (файл war
в нашем случае), но каков правильный способ решения этой проблемы?
Ответы
Ответ 1
Вы можете попробовать excluding
зависимость от woodstox в своем объявлении dependency
для xstream.
<dependency>
<groupId>xstream.group</groupId>
<artifactId>xstream</artifactId>
<version>a.b.c</version>
<exclusions>
<exclusion>
<groupId>woodstox.group</groupId>
<artifactId>woodstox</artifactId>
</exclusion>
</exclusions>
</dependency>
Ответ 2
Если вам повезет, решение, предложенное Рагхурамом, будет работать.
Если нет, вам нужно будет создать модифицированную версию баннера XStream, возможно, используя Maven Shade Plugin, объединив дерево XStream woodstox в один Jar, переименовать все древесные пакеты.