gradle 解决依赖冲突
这个链接Gradle Goodness很好解释了dependencyInsight
的用法,这里取其精华
build.gradle
apply plugin: 'java'
// Set Bintray JCenter as repository.
repositories.jcenter()
dependencies {
// Set dependency for Spring Boot
compile "org.springframework.boot:spring-boot-starter-web:1.1.5.RELEASE"
// Set dependency for SLF4J with conflicting version.
compile 'org.slf4j:slf4j-api:1.7.1'
}
命令
gradle -q dependencyInsight --configuration compile --dependency slf4j-api
执行结果:
org.slf4j:slf4j-api:1.7.7 (conflict resolution)
+--- org.slf4j:jcl-over-slf4j:1.7.7
| \--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE
| \--- org.springframework.boot:spring-boot-starter:1.1.5.RELEASE
| \--- org.springframework.boot:spring-boot-starter-web:1.1.5.RELEASE
| \--- compile
+--- org.slf4j:jul-to-slf4j:1.7.7
| \--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE (*)
\--- org.slf4j:log4j-over-slf4j:1.7.7
\--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE (*)
org.slf4j:slf4j-api:1.7.1 -> 1.7.7
\--- compile
org.slf4j:slf4j-api:1.7.6 -> 1.7.7
\--- ch.qos.logback:logback-classic:1.1.2
\--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE
\--- org.springframework.boot:spring-boot-starter:1.1.5.RELEASE
\--- org.springframework.boot:spring-boot-starter-web:1.1.5.RELEASE
\--- compile
(*) - dependencies omitted (listed previously)
1.7.1 -> 1.7.7 这个叫bump to
由于冲突碰撞,高版本吸收低版本,所以低版本 bump to 高版本^_^
冲突解决
发生冲突后,gradle默认使用高版本。但也可以强制指定版本,可以在相应项目的build.gradle
文件中添加
configurations.all { resolutionStrategy.force 'org.slf4j:slf4j-api:1.7.1' }