Maven 中同一依赖项的不同版本

2022-09-04 01:26:51

我有一个依赖于Woodstox和XStream的maven项目。不幸的是,XStream也依赖于Woodstox,但版本比我需要的版本略早。但与此同时,Woodstox libs的神器名称发生了变化,因此maven不会认为它们是同一神器的多个版本。但是包和类名是相同的,这意味着在运行时存在冲突。

现在,我显然可以以某种方式将旧的woodstox罐从构建中破解出来(在我们的例子中是一个文件),但是解决此类问题的正确方法是什么?war


答案 1

您可以在 xstream 的声明中尝试 woodstox 依赖项。excludingdependency

  <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

如果幸运的话,Raghuram建议的解决方案将起作用。

如果没有,你将不得不创建一个修改版本的XStream jar,可能使用Maven Shade插件,将两个XStream woodstox合并到一个Jar中,重命名所有woodstox包


推荐