我有一个依赖于Woodstox和XStream的maven项目。不幸的是,XStream还依赖于Woodstox,但版本略高于我的需要。与此同时,Woodstox库的工件名称发生了变化,因此maven不会将它们视为同一工件的多个版本。但是包和类名是相同的,这意味着在运行时存在冲突。
现在,我显然可以从构建中取出旧的woodstox jar(在我们的案例中是一个war
文件),但是解决这类问题的正确方法是什么?
答案 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。