【问题标题】:How to use different version dependencies for each JAR如何为每个 JAR 使用不同的版本依赖项
【发布时间】:2017-06-08 04:48:58
【问题描述】:

我有一个 maven 项目 A,它使用一些 Java 库 B,这是 POM 中声明的依赖项。该库使用其他一些库C,它使用库D。问题出现在编译AC 都使用该库D 但版本不同的地方。它看起来像这样:

A ----- B
|       |
D(v1)   C
        |
        D(v2)

A 无法将其依赖更改为D(v2),但如果我在A 的POM 中排除D(v2)

<dependency>
    <groupId>...</groupId>
    <artifactId> C </artifactId>
    <exclusions>
        <exclusion>
            <groupId>...</groupId>
            <artifactId> D </artifactId>
            <version> v2 </version>
        </exclusion>
    </exclusions>
</dependency>

我会得到编译错误,即某些类 MissingClass 在类 C 中未解决。最烦的是只有D(v2) 有那个Missing Class

我对 Maven 不太熟练,所以有什么方法可以让 Maven 在 A 的情况下使用 D(v1) 依赖,在 B 的情况下使用 D(v2)

【问题讨论】:

  • 你不能。类路径中只能有一个版本的 D。如果Av2 不兼容并且Cv1 不兼容,那么您不能在项目中同时使用AC。使用与v1 兼容的旧版C

标签: java maven jar dependencies version


【解决方案1】:

这更多是Java类路径的问题。 如果您在没有 Maven 的情况下通过 cmd 行运行,您的场景可以工作吗? (即运行您的应用程序,并手动指定您的类路径)。

如果答案是肯定的,那么您可能可以在 Maven 中完成;但从你的描述我的理解是,不,你不能通过 cmd 行运行。

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多