Java 用xml API混淆可传递依赖行为
在我的项目中,我依赖于几个外部库,这些库依赖于不同版本的Java 用xml API混淆可传递依赖行为,java,maven,dependency-management,Java,Maven,Dependency Management,在我的项目中,我依赖于几个外部库,这些库依赖于不同版本的xmlapi。如果我使用maven enforcer插件我的构建会失败 在开始之前,打印我正在运行的应用程序的类路径会给出xmlapi:xmlapi:1.4.01 当我启用maven enforcer插件时我得到了预期的结果 Dependency convergence error for xml-apis:xml-apis:1.3.04 paths to dependency are: +-org.bbraile:bbraile:1.0
xmlapi
。如果我使用maven enforcer插件
我的构建会失败
在开始之前,打印我正在运行的应用程序的类路径会给出xmlapi:xmlapi:1.4.01
当我启用maven enforcer插件时
我得到了预期的结果
Dependency convergence error for xml-apis:xml-apis:1.3.04 paths to dependency are:
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.bbraile:utd:1.0-SNAPSHOT
+-xalan:xalan:2.7.2
+-xalan:serializer:2.7.2
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.bbraile:utd:1.0-SNAPSHOT
+-xml-apis:xml-apis:1.4.01
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.bbraile:utd:1.0-SNAPSHOT
+-xerces:xercesImpl:2.11.0
+-xml-apis:xml-apis:1.4.01
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-com.io7m.xom:xom:1.2.10
+-xml-apis:xml-apis:1.3.03
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-bridge:1.7
+-org.apache.xmlgraphics:batik-anim:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-bridge:1.7
+-org.apache.xmlgraphics:batik-css:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-bridge:1.7
+-org.apache.xmlgraphics:batik-ext:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-bridge:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-dom:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-gvt:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-svg-dom:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-org.apache.xmlgraphics:batik-svggen:1.7
+-xml-apis:xml-apis:1.3.04
and
+-org.bbraile:bbraile:1.0-SNAPSHOT
+-org.apache.xmlgraphics:batik-transcoder:1.7
+-xml-apis:xml-apis:1.3.04
要根据我读到的内容修复此问题,我应该将此添加到我的POM中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
</dependencyManagement>
咨询依赖关系:tree-Dverbose=true-Dincludes=XMLAPI
给出如下,这意味着2.0.2
org.bbraile:bbraile:jar:1.0-SNAPSHOT
+- org.bbraile:utd:jar:1.0-SNAPSHOT:compile
| +- xalan:xalan:jar:2.7.2:compile
| | \- xalan:serializer:jar:2.7.2:compile
| | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for conflict with 1.0.b2)
| \- xerces:xercesImpl:jar:2.11.0:compile
| \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
+- com.io7m.xom:xom:jar:1.2.10:compile
| \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
+- org.apache.xmlgraphics:batik-transcoder:jar:1.7:compile
| +- org.apache.xmlgraphics:batik-bridge:jar:1.7:compile
| | +- org.apache.xmlgraphics:batik-anim:jar:1.7:compile
| | | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| | +- org.apache.xmlgraphics:batik-css:jar:1.7:compile
| | | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| | +- org.apache.xmlgraphics:batik-ext:jar:1.7:compile
| | | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| +- org.apache.xmlgraphics:batik-dom:jar:1.7:compile
| | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| +- org.apache.xmlgraphics:batik-gvt:jar:1.7:compile
| | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| +- org.apache.xmlgraphics:batik-svg-dom:jar:1.7:compile
| | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| +- org.apache.xmlgraphics:batik-svggen:jar:1.7:compile
| | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| \- xml-apis:xml-apis-ext:jar:1.3.04:compile
\- xml-apis:xml-apis:jar:2.0.2:compile
为什么我在DependencyManager中的显式版本被忽略?为什么这样的设置会降低我类路径上的版本?如何使用最新的
XMLAPI
版本传递maven enforcer插件
?结果表明这不是maven的问题,这是XMLAPI的问题。到今天为止,这就是Maven Central中XMLAPI:XMLAPI
的外观
如果你仔细看,2.0.2不是最新版本,1.4.01就是!当其他人和他们的IDE都认为2大于1时,XMLAPI却倒退了
这是非常混乱和不明显的,所以希望有人发现这是有用的 您如何准确地检查类路径上的版本?@TavianBarnes使用
exec:exec
和打印System.getProperty(“java.class.path”)运行。maven jar中有版本号如果你查看2.0.0和2.0.2的POM文件,它们被“重新定位”到1.0.b2版本,这是一个巨大的混乱,混淆了许多构建工具和脚本。xml-apisxml-apis1.0.b2
org.bbraile:bbraile:jar:1.0-SNAPSHOT
+- org.bbraile:utd:jar:1.0-SNAPSHOT:compile
| +- xalan:xalan:jar:2.7.2:compile
| | \- xalan:serializer:jar:2.7.2:compile
| | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for conflict with 1.0.b2)
| \- xerces:xercesImpl:jar:2.11.0:compile
| \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
+- com.io7m.xom:xom:jar:1.2.10:compile
| \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
+- org.apache.xmlgraphics:batik-transcoder:jar:1.7:compile
| +- org.apache.xmlgraphics:batik-bridge:jar:1.7:compile
| | +- org.apache.xmlgraphics:batik-anim:jar:1.7:compile
| | | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| | +- org.apache.xmlgraphics:batik-css:jar:1.7:compile
| | | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| | +- org.apache.xmlgraphics:batik-ext:jar:1.7:compile
| | | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| +- org.apache.xmlgraphics:batik-dom:jar:1.7:compile
| | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| +- org.apache.xmlgraphics:batik-gvt:jar:1.7:compile
| | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| +- org.apache.xmlgraphics:batik-svg-dom:jar:1.7:compile
| | +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| | \- (xml-apis:xml-apis-ext:jar:1.3.04:compile - omitted for duplicate)
| +- org.apache.xmlgraphics:batik-svggen:jar:1.7:compile
| | \- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| +- (xml-apis:xml-apis:jar:2.0.2:compile - version managed from 1.0.b2; omitted for duplicate)
| \- xml-apis:xml-apis-ext:jar:1.3.04:compile
\- xml-apis:xml-apis:jar:2.0.2:compile