我有一个依赖于Woodstox和XStream的maven项目。不幸的是,XStream也依赖于Woodstox,但是它的版本稍微比我所需要的要旧。但与此同时,Woodstox库的工件名称发生了变化,因此maven不会将它们视为同一工件的多个版本。但包名和类名是相同的,这意味着在运行时会有冲突。Maven中不同版本的相同依赖关系
现在,我明显可以破解旧的woodstox罐子(我们的案例中的war
文件),但是解决这类问题的正确方法是什么?
我有一个依赖于Woodstox和XStream的maven项目。不幸的是,XStream也依赖于Woodstox,但是它的版本稍微比我所需要的要旧。但与此同时,Woodstox库的工件名称发生了变化,因此maven不会将它们视为同一工件的多个版本。但包名和类名是相同的,这意味着在运行时会有冲突。Maven中不同版本的相同依赖关系
现在,我明显可以破解旧的woodstox罐子(我们的案例中的war
文件),但是解决这类问题的正确方法是什么?
您可以尝试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>
如果你幸运的话,Raghuram建议的解决方案将起作用。
如果没有,您将不得不创建XStream jar的修改版本,可能使用Maven Shade Plugin,将两个XStream woodstox合并到一个Jar中,即renaming all woodstox packages。
+1,但不幸的是,要求新版本与旧版本具有相同的类和包名称,否则向后兼容 – 2011-01-28 11:08:50