Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用xml API混淆可传递依赖行为_Java_Maven_Dependency Management - Fatal编程技术网

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