2015-03-30 243 views
3

在我的项目中,我依赖几个外部库,这些库取决于xml-apis的各种版本。如果我使用maven-enforcer-pluginto fail if there are version conflicts我的构建失败。将传递依赖行为与xml-apis混淆

在我开始,我的打印应用程序运行的类路径给出xml-apis:xml-apis:1.4.01

当我使maven-enforcer-plugin我得到这个,预计

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> 

然后重新运行我的程序。它通过maven-enforcer-plugin检查,但我的班级路径现在说我正在运行xml-apis:xml-apis:1.0.b2。版本号是如何变老的?为什么我的版本被忽略?

添加这对我的POM,有或没有<version>标签没有影响

<dependencies> 
    <dependency> 
     <groupId>xml-apis</groupId> 
     <artifactId>xml-apis</artifactId> 
     <version>2.0.2</version> 
    </dependency> 
</dependencies> 

咨询dependency:tree -Dverbose=true -Dincludes=xml-apis列出了,这意味着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 

为什么我在dependencyManagment明确的版本被忽略?为什么设置会减少我的类路径上的版本?我怎样才能通过maven-enforcer-plugin与最新的xml-apis版本?

+0

您究竟如何检查您的类路径上的哪个版本? – 2015-03-30 19:46:16

+0

@TavianBarnes以'exec:exec'运行并打印System.getProperty(“java.class.path”)。 maven jar的版本号为 – TheLQ 2015-03-30 19:47:52

回答

3

原来这不是maven问题,这是一个xml-api的问题。截至今天这是怎么了xml-apis:xml-apis看起来Maven的中央

Very confusing xml-apis versions

如果你仔细看2.0.2不是最新版本,1.4.01是!当其他人和他们的IDE认为2大于1时,xml-apis会倒退。

这是非常混乱和不明显,所以希望有人认为这有用。

+0

如果你看看2.0.0和2.0.2的POM文件,它们被“重新定位”到版本1.0.b2 这是一个巨大的混乱,并且混淆了很多构建工具和脚本。 XML的API XML的API 1.0.b2 ajeans 2018-02-13 09:13:27