在我的项目中,我spring-jdbc:4.1.4.RELEASE
工作正常,没有任何问题。现在进行新的更改,我尝试在我的项目中添加spring-security-taglibs:4.0.4.RELEASE
,该项目正在尝试下载spring-security-taglibs:4.0.4.RELEASE
和spring-jdbc-4.2.5.RELEASE
,这会在我的项目中造成严重问题。因为我所需的spring-jdbc
版本是我明确指定的4.1.4.RELEASE
。我怎么能避免这个?背后发生了什么?
这是gradle的奇怪行为
答案 0 :(得分:1)
您的build.gradle
:
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework:spring-jdbc:4.1.4.RELEASE'
compile 'org.springframework.security:spring-security-taglibs:4.0.4.RELEASE'
}
因此,这会在您的依赖项中引入冲突,这在以下任务的输出中是可见的:
gradle dependencyInsight --dependency org.springframework:spring-jdbc
:dependencyInsight
org.springframework:spring-jdbc:4.2.5.RELEASE (conflict resolution)
\--- org.springframework.security:spring-security-acl:4.0.4.RELEASE
\--- org.springframework.security:spring-security-taglibs:4.0.4.RELEASE
\--- compile
org.springframework:spring-jdbc:4.1.4.RELEASE -> 4.2.5.RELEASE
\--- compile
上面的箭头( - >)表示使用了gradle默认解析策略,并且gradle选择了4.2.5(最新)。您可以阅读gradle文档:
Gradle提供以下冲突解决策略:
最新:使用最新版本的依赖项。这是Gradle的默认策略,通常是一个合适的选择 因为版本是向后兼容的。
失败:版本冲突导致构建失败。此策略要求在构建中显式解决所有版本冲突 脚本。
我认为您可以选择:
spring-jdbc
(最好的IMO)spring-jdbc