Java Gradle中依赖项的多个版本
我正在构建一个java项目,使用gradle进行版本控制 我正在从Drools规则引擎的旧版本5.5.0迁移到6.2.0。 与“大爆炸”和更改Every类以使用新版本不同,我希望每次更改一个类,并在迁移所有类时删除旧的依赖关系 在我的gradle.build中,我设置了:Java Gradle中依赖项的多个版本,java,gradle,Java,Gradle,我正在构建一个java项目,使用gradle进行版本控制 我正在从Drools规则引擎的旧版本5.5.0迁移到6.2.0。 与“大爆炸”和更改Every类以使用新版本不同,我希望每次更改一个类,并在迁移所有类时删除旧的依赖关系 在我的gradle.build中,我设置了: compile 'org.drools:drools-compiler:6.2.0.Final' compile 'org.kie:kie-api:6.2.0.Final' compile 'org.drools:droo
compile 'org.drools:drools-compiler:6.2.0.Final'
compile 'org.kie:kie-api:6.2.0.Final'
compile 'org.drools:drools-core:6.2.0.Final'
compile 'org.drools:drools-core:5.5.0.Final'
compile 'org.drools:drools-compiler:5.5.0.Final'
但它只下载最新版本的库。
gradle是否支持同一库的多个版本?否gradle不支持同一库的多个版本。默认情况下,它将选择最新版本,但您可以使用
org.gradle.api.artifacts.ResolutionStrategy.failOnVersionConflict()
在发生冲突的情况下,Gradle默认使用冲突的最新版本
版本。但是,您可以更改此行为。使用此方法
将解决方案配置为在任何版本冲突时立即失败,例如。
同一依赖项(组和名称)的多个不同版本
相同配置中的(相等)
从此处开始下载同一库的多个版本:
参考:
顺便说一句
- 以上下载两个版本,而仅使用一个版本进行编译
请参阅:No,因为它没有意义:编译器只能使用一个具有给定名称的类。不能让一个项目使用两个同名的不同类。如果类路径中较新的jar在较旧的jar之前,编译器将根据较新的类检查代码并忽略较旧的类,反之亦然。您应该更改版本,并在一个单独的git/svn分支中进行迁移。我有一个类似的情况,我想使用ExoPlayer 2实现所有功能,而ExoPlayer 1仅用于FLAC,它们有两个不同的包名,因此应该不会有冲突,而且两个库都有意义。忽略所有这些想法的丑陋性,有没有办法只在特定的依赖版本冲突上失败?
repositories {
mavenCentral()
}
configurations {
compile5
compile6
}
dependencies {
compile5 'org.osgi:org.osgi.core:5.0.0'
compile6 'org.osgi:org.osgi.core:6.0.0'
}
task libs(type: Sync) {
from configurations.compile5
from configurations.compile6
into "$buildDir/libs"
}