繁体   English   中英

Gradle:更改外部依赖的配置

[英]Gradle: Changing configuration of external dependency

我们正处于将公共集合从版本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。

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

configurations.compile {
    resolutionStrategy.force 'commons4',
}

dependencies {
    runtime('commons3')
}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM