我们正处于将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。
答案 0 :(得分:0)
不确定是否存在实现此目的的正确方法,但是如果强制在commons3
配置中将commons4
的所有版本替换为compile
,并且另外定义{ {1}}仅注释?
runtime
答案 1 :(得分:0)
请参阅here,他们使用replacedBy
告诉gradle com.google.collections:google-collections
被com.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}")
}
}