2011-01-28 95 views
14

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

现在,我明显可以破解旧的woodstox罐子(我们的案例中的war文件),但是解决这类问题的正确方法是什么?

回答

18

您可以尝试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> 
+6

+1,但不幸的是,要求新版本与旧版本具有相同的类和包名称,否则向后兼容 – 2011-01-28 11:08:50

5

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

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

相关问题