【问题标题】:Different versions of the same dependency in MavenMaven中相同依赖项的不同版本
【发布时间】:2013-09-05 03:47:54
【问题描述】:

我有一个依赖于 Woodstox 和 XStream 的 maven 项目。不幸的是,XStream 也依赖于 Woodstox,但版本比我需要的稍旧。但与此同时,Woodstox 库的工件名称发生了变化,因此 maven 不会将它们视为同一工件的多个版本。但是包名和类名是一样的,就是运行时有冲突。

现在,我显然可以以某种方式从构建中破解旧的woodstox jar(在我们的例子中是war 文件),但是解决此类问题的正确方法是什么?

【问题讨论】:

    标签: java dependencies maven conflict


    【解决方案1】:

    您可以在 xstream 的 dependency 声明中尝试 excluding woodstox 依赖项。

      <dependency>
            <groupId>xstream.group</groupId>
            <artifactId>xstream</artifactId>
            <version>a.b.c</version>
            <exclusions>
                <exclusion>
                    <groupId>woodstox.group</groupId>
                    <artifactId>woodstox</artifactId>
                </exclusion>
            </exclusions>
      </dependency>
    

    【讨论】:

    • +1,但不幸的是,这要求新版本具有与旧版本相同的类和包名称,否则向后兼容
    【解决方案2】:

    如果幸运的话,Raghuram 建议的解决方案会奏效。

    如果没有,您将不得不创建 XStream jar 的修改版本,可能使用 Maven Shade Plugin,将两个 XStream woodstox 合并到一个 Jar 中,renaming all woodstox packages

    【讨论】:

      猜你喜欢
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2012-04-05
      相关资源
      最近更新 更多