Gradle:更改外部依赖的配置

时间:2017-06-08 14:12:47

标签: java gradle

我们正处于将commons-collections从版本3更新到版本4的情况。由于他们已将组ID更改为commons-collections4,我们最终将在类路径中拥有2个版本的commons-collection。版本3和版本4。 对于我们的开发,应该使用版本4。版本3将通过外部依赖进入,所以如果我们喜欢:

compile ("org.hibernate:hibernate-entitymanager:3.5.6-Final")

版本3将通过hibernate-entitymanager进入,也将在编译时提供。所以开发人员可以使用它。

有没有办法说“commons-collections 3现在应该被认为是hibernate-entitymanager时的运行时依赖”?

我们正在使用Gradle 3.5。

3 个答案:

答案 0 :(得分:0)

不确定是否存在实现此目的的正确方法,但是如果强制在commons3配置中将commons4的所有版本替换为compile,并且另外定义{ {1}}仅注释?

runtime

答案 1 :(得分:0)

请参阅here,他们使用replacedBy告诉gradle com.google.collections:google-collectionscom.google.guava:guava取代。 Gradle现在将这两个模块视为依赖解析中的单个模块,并且永远不会同时包含这两个模块。

dependencies {
    modules {
        module("com.google.collections:google-collections") {
            replacedBy("com.google.guava:guava")
        }
    }   
}

答案 2 :(得分:0)

感谢webdizz让我了解这个想法,似乎我通过执行以下操作来管理它:

configurations.compileClasspath.resolutionStrategy {
    dependencySubstitution {
        substitute module('commons-collections:commons-collections') with module("org.apache.commons:commons-collections4:${COMMONS_COLLECTIONS_VERSION}")
    }
}