Maven依赖冲突 - 更高版本

时间:2014-08-21 14:25:40

标签: maven dependencies version

我有一个项目有一些相同但具有不同版本的依赖项。示例:

  • commons-logging-1.0.4.jar
  • commons-logging-1.1.1.jar(与1.0.4冲突省略)

是否有配置允许我强制maven始终获得冲突的更高版本的依赖项?

2 个答案:

答案 0 :(得分:3)

  

强制maven始终获得更高版本

你不想这样做。可能存在依赖于具有与较新版本不同的API的旧版本的转发依赖性。

您希望从源头解决您的依赖性问题。找出需要较旧依赖性的原因以及原因。看看你能做些什么来解决冲突。

如果API未更改,您可以明确声明dependecies并排除旧的transitative,在这里我们从xerces中排除xml-apis:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
    <scope>compile</scope>
    <exclusions>
        <exclusion> 
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
    </exclusions> 
</dependency>

使用上述逻辑,您可以声明库所需的版本。但是,由于库版本之间的api更改,请注意不要以非编译代码结束。

答案 1 :(得分:0)

http://maven.apache.org/enforcer/enforcer-rules/requireUpperBoundDeps.html强制您使用和/或指定所有依赖项的最新版本。所以它不是自动获取,但它符合您的要求。