我正在构建一个java项目,使用gradle进行版本控制。
我从旧版本的Drools规则引擎5.5.0迁移到6.2.0。 而不是去大爆炸'并且更改everey类以使用新版本,我想在当时更改一个类,并在迁移所有类时删除旧的依赖项。
在我的gradle.build中,我设置了:
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是否支持同一个库的多个版本?
答案 0 :(得分:11)
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"
}
请参阅:How to get multiple versions of the same library
Gradle提供以下冲突解决策略:
最新:使用最新版本的依赖项。 这是Gradle的默认策略,通常是一个合适的选择 只要版本向后兼容。
失败:版本冲突导致构建失败。 此策略需要所有版本冲突 在构建脚本中明确解析。请参阅ResolutionStrategy 有关如何明确选择特定版本的详细信息。
答案 1 :(得分:5)
没有gradle不支持同一个库的多个版本。默认情况下会选择最新版本,但您可以使用
更改此内容org.gradle.api.artifacts.ResolutionStrategy.failOnVersionConflict()
如果发生冲突,Gradle默认使用最新的冲突 版本。但是,您可以更改此行为。使用此方法 将解决方案配置为在任何版本冲突上急切失败,例如: 相同依赖项的多个不同版本(组和名称是 相同的配置。
从这里采取https://gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html