【问题标题】:Maven classpath order issuesMaven 类路径顺序问题
【发布时间】:2010-10-22 00:56:23
【问题描述】:

有谁知道在 Maven2 中设置特定类路径顺序的方法,而不是我目前似乎遇到的随机顺序?

想要这样做有很多正当理由:

  • 供应商提供了一个补丁 jar,其中包含以前发布的 jar 的覆盖类,因此补丁 jar 必须首先出现在类路径顺序中。
  • 在通过遍历 pom 依赖项发现的类路径中找到的两个 jar 在同一个包中包含具有不同签名的相同类。例如:

老板 jbossall 客户端 4.2.0.GA

org.hibernate 休眠 3.1

两者都包含: org.hibernate.util.ReflectHelper.class,但是 jbossall-client 版本缺少 getFastClass 方法。

通过谷歌搜索,我发现这可能是 maven 爱好者和面临这个特定问题的人之间的争论点,但类路径排序肯定有正当理由。

任何解决此特定难题的人的建议将不胜感激!

谢谢

【问题讨论】:

  • 如果 jboss 在一个版本中包含 hibernate,您肯定不想与另一个版本的 hibernate 混合使用吗?

标签: maven-2 classpath


【解决方案1】:

从 2.0.9 版开始,maven 使用 pom order 作为类路径,因此您现在可以实际操作它。我们主要抑制对我们也直接包含的外部库的传递依赖。

来自 maven 2.0.9 的发行说明:

MNG-1412 / MNG-3111 引入了类路径上依赖项的确定性排序。过去,使用自然集排序,这会导致奇怪的结果。现在从您的 pom 中保留了排序,最后添加了由继承添加的依赖项。在具有冲突或重复依赖项的构建中,这可能会导致输出发生更改。简而言之,如果您对 2.0.9 有奇怪的问题,请查看依赖项,看看您是否在某处有冲突。

【讨论】:

    【解决方案2】:

    Maven 2.0.9 添加了正确的顺序,因此您绝对必须拥有该版本或更高版本才能正常工作。

    其次,您需要更新的插件。 Maven 家伙正在努力修复,它在他们的 jira 中修复,但这是我迫切需要的。所以与此同时,我自己修复了这个问题,您可以从 github 中提取 Modified plugin source code

    编辑:参考http://jira.codehaus.org/browse/MECLIPSE-388

    有两种安装方式,要么拉我修改的代码并安装它,要么下载预构建的 jar 并添加它。

    构建插件

    从您签出的插件目录中运行 maven install,然后在项目 pom 的插件部分添加以下内容:

    <build>
      </plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.8-cpfix</version>
        </plugin>
      </plugins>
    </build>
    

    下载jar

    或者,如果您不想自己下载和编译,则可以获取 jar file 并自行安装。

    文件运行后

    mvn install:install-file -Dfile=<path-to-file> -DgroupId=org.apache.maven.plugins \
        -DartifactId=maven-eclipse-plugin -Dversion=2.8-cpfix -Dpackaging=jar
    

    无论您现在如何安装它,当您运行 mvn eclipse:eclipse 时,它都会根据您在 pom 文件中定义的顺序获取修改后的代码并排序依赖项,不按字母顺序排列。它还将 JRE 容器放在依赖项的顶部。

    希望此代码的真实版本很快就会出现,但与此同时,此修复在我的项目中对我有用,我希望它也可以帮助其他人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 2010-10-30
      • 2023-03-16
      • 2011-02-21
      • 1970-01-01
      相关资源
      最近更新 更多