Я работаю над большим проектом с несколькими службами и библиотеками, в основном в grails
, с gradle
компоновщиком. Я пытаюсь обновить библиотеку (скажем, logback
) по соображениям безопасности.
Я уже обновил его в одной из наших библиотек (скажем, our-logger
), вот так:
#our-logger/build.gradle
...
dependencies {
...
compile 'ch.qos.logback:logback-classic:1.2.3'
...
}
когда я обновляю службу (скажем, our-service
) для использования новой версии our-logger
, я получаю вход в систему из других библиотек, и gradle выбирает ближайшую версию более низкую через cobertura
и некоторые другие зависимости, вместо более высокой версии, проходящей через our-logger
.
#our-service/build.gradle
...
apply plugin: 'cobertura'
...
dependencies {
...
compile 'our-logger:9.99' # safe now with logback-1.2.3
...
}
~/our-service $ ./gradlew dependencies
...
cobertura
\--- net.sourceforge.cobertura:cobertura:2.1.1
+--- ch.qos.logback:logback-classic:1.0.13 -> 1.1.11
| \--- ch.qos.logback:logback-core:1.1.11
...
compile - Dependencies for source set 'main' (deprecated, use 'implementation ' instead).
+--- org.grails:grails-dependencies:3.3.8
| +--- org.springframework.boot:spring-boot-starter-logging:1.4.2.RELEASE -> 1.5.15.RELEASE
| | +--- ch.qos.logback:logback-classic:1.1.11
| | | +--- ch.qos.logback:logback-core:1.1.11
...
+--- our-logger:9.99
| +--- ch.qos.logback:logback-classic:1.2.3 -> 1.1.11 (*)
Как применить logback-1.2.3
без явного объявления его во всех службах?