Maven中的依赖冲突问题

5
如果我有一些库在不同版本中具有其他依赖关系,比如这个例子:commons-logging-1.0.4.jar(因与1.1.1冲突而被省略)和commons-logging-1.1.1.jar。
对于这种情况,最佳做法是什么?是通过相关依赖项的排除标签()通知冲突,还是什么都不做,因为库已被省略?如果在POM中不指定依赖项的排除会有问题吗?
以下示例说明如何在POM中解决版本内部冲突:
<dependency>
        <groupId>struts</groupId>
        <artifactId>struts</artifactId>
        <version>1.2.8</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
         </exclusions>
    </dependency>
</dependencies>

我还不理解你的问题,请提供以下信息:你想使用的Maven版本(2.2.x vs. 3.0.x)。我认为答案取决于不同的版本。也许这个问题根本无法回答,因为问题在于不同的版本是否适用于你的使用。 - mliebelt
我正在使用Maven 3.0,我的项目之前使用的是ANT,现在正在进行向Maven的重构,并且需要一些其他内部项目的库,这些库有更多的依赖项。 - ricardo
当我查看“依赖层次结构”时,我注意到了一些相同库的不同版本,就像上面的例子一样,而Maven将旧版本设置为“因[版本]冲突而省略”。因此,我想知道正确的做法是什么。 - ricardo
你试过我的建议了吗?那正是 dependencyManagement 标签的作用。 - skuro
1个回答

6
你需要在[父级] POM 中配置一个dependencyManagement部分。这将强制作为传递依赖项的工件成为指定版本。

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