Различные версии одной и той же зависимости в 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, переименовать все древесные пакеты.