Maven相同的传递依赖但不同版本

4

我遇到了一个问题,我有以下两个依赖关系:

org.apache.felix » org.apache.felix.utils » 1.6.0

com.github.rotty3000 » phidias » 0.3.2

它们都对org.osgi.core有传递依赖,felix依赖于版本4.1.0,而phidias依赖于版本5.0.0。

我们需要版本5.0.0来正确编译我们的代码。

如果我将我的依赖关系设置为:

<dependencies>
    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.utils</artifactId>
        <version>1.6.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.github.rotty3000</groupId>
        <artifactId>phidias</artifactId>
        <version>0.3.2</version>
        <scope>compile</scope>
    </dependency>
</dependencies>
<我们想按字母顺序排列依赖项,这样Felix就会在顶部,有没有办法强制OSGI.core解析5.0.0版本?

<谢谢!

1个回答

5

<exclude>标签可以从两个依赖项中排除它。

在您的pom.xml中将org.osgi.core所需的依赖项添加为显式依赖项,版本为5.0.0

确保您使用的两个库与5.0.0兼容。


1
我同意这个解决方案,因为如果你无法使用由传递性提供的4.1.0版本编译应用程序,那么这意味着你应该在pom.xml中声明依赖项,并指定编译所需的版本才能成功。 - Fabien
这是一个复杂的项目,我们的基础代码正在使用ivy,我正在通过解析ivy文件制作自动化端口到maven,手动制作异常是可行的,但绝对不是首选解决方案。我会等一天看看是否有其他方法来强制使用5.0.0版本,如果没有其他选择,那么这将是解决方案。 - tom
@Fabien,5.0.0版本也是其他直接依赖项的传递依赖项,我猜如果我从Felix中排除它,它也应该可以工作。 - tom
@tom 我知道你的意思,但如果你想自动化它,你必须考虑这个事实。 - jmj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接