Maven 2 maven依赖冲突

Maven 2 maven依赖冲突,maven-2,Maven 2,在我的项目中,有两个库,每个库都依赖于XML解析类java.XML.parsers.DocumentBuilderFactory。这些库中的每一个都引用来自不同jar的文件(一个从名为xmlParserAPIs的jar获取,另一个从xml-API-1.0.b2.jar获取)。不幸的是,每个文件中都有不同版本的类,因此我看到运行时错误,这取决于加载顺序。这两个XMLJAR都是第三方库的可传递依赖项。有没有处理这场冲突的好方法 编辑:我不确定这是否会对如何处理问题产生影响,但这只发生在测试中,因为其

在我的项目中,有两个库,每个库都依赖于XML解析类java.XML.parsers.DocumentBuilderFactory。这些库中的每一个都引用来自不同jar的文件(一个从名为xmlParserAPIs的jar获取,另一个从xml-API-1.0.b2.jar获取)。不幸的是,每个文件中都有不同版本的类,因此我看到运行时错误,这取决于加载顺序。这两个XMLJAR都是第三方库的可传递依赖项。有没有处理这场冲突的好方法

编辑:我不确定这是否会对如何处理问题产生影响,但这只发生在测试中,因为其中一个依赖项在测试范围内

谢谢, 杰夫

(…)不幸的是,每个文件中都有不同版本的类,因此我看到运行时错误,这取决于加载顺序

理论上,
xmlapi.jar
xmlParserAPIs.jar
(来自xerces2-j)是相同的jar,但名称不同,
xmlParserAPIs.jar
多年来一直被弃用(参见和)

如果您的依赖关系依赖于不同且不兼容的
xmlapi.jar版本,那么我认为这些依赖关系是互斥的,换句话说,至少对于您正在使用的版本来说是不兼容的。唯一的解决方案是找到具有聚合依赖关系的版本

如果他们可以使用兼容的版本,可以使用
xmlParserAPIs.jar
的依赖项来仅使用
xmlapi.jar

我不确定这是否会对如何处理问题产生影响,但这只发生在测试中,因为其中一个依赖项在测试范围内


不,这只是解释了为什么您在运行时没有遇到问题(因为
测试
的作用域不在类路径上,而且显然不冲突)。

谢谢。看起来我在另外两个lib中与xml库有冲突。如果我从JAR中排除xmlParserAPIs和XMLAPI,并让jre提供它们,那么一切都会正常工作。这样做不安全吗?我应该为java.xml.parsers添加一个系统范围的依赖项吗?谢谢。@Jeff 1。使用
mvn dependency:tree
分析依赖关系。2.如果它与JRE的解析器一起工作,那么只需排除依赖项。3.我倾向于避免
系统
范围内的依赖关系(我认为麻烦多于好处)。