Maven中相同依赖的不同版本

时间:2011-01-28 10:47:32

标签: java dependencies maven conflict

我有一个依赖于Woodstox和XStream的maven项目。不幸的是,XStream还依赖于Woodstox,但版本略高于我的需要。与此同时,Woodstox库的工件名称发生了变化,因此maven不会将它们视为同一工件的多个版本。但是包和类名是相同的,这意味着在运行时存在冲突。

现在,我显然可以从构建中取出旧的woodstox jar(在我们的案例中是一个war文件),但是解决这类问题的正确方法是什么?

2 个答案:

答案 0 :(得分:18)

您可以在xstream的excluding声明中尝试dependency woodstox依赖。

  <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>

答案 1 :(得分:5)

如果幸运的话,Raghuram建议的解决方案将有效。

如果没有,你将不得不创建一个XStream jar的修改版本,可能使用Maven Shade Plugin,将两个XStream woodstox合并到一个Jar中,renaming all woodstox packages