Maven中相同依赖的不同版本

biz*_*lop 14 java dependencies conflict maven

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

现在,我可以在某种程度上破坏构造中的旧woodstox jar(war在我们的例子中是一个文件)但是解决这类问题的正确方法是什么?

Rag*_*ram 18

您可以excluding在xstream的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>
Run Code Online (Sandbox Code Playgroud)

  • +1,但不幸的是,它要求新版本具有与旧版本相同的类和包名称,否则向后兼容 (6认同)

Sea*_*oyd 5

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

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