Cet article s'adresse aux personnes souhaitant utiliser SLF4J.
Le chemin de classe contient plusieurs liaisons SLF4J. SLF4J: Voir http://www.slf4j.org/codes.html#multiple_bindings pour une explication.
L'exclusion groupée est possible avec la syntaxe suivante
configurations.all {
exclude
}
[3 \ .2 . Utilisation de la gestion des dépendances de Spring Boot de manière isolée](https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#managing-dependencies-using-in -isolation) est pratique
Même si vous n'utilisez pas Spring Boot, vous pouvez le considérer comme un plugin Gradle et l'utiliser.
build.gradle
plugins {
id 'org.springframework.boot' version '2.1.8.RELEASE' apply false
}
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
}
}
avec ça
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
Cela semble être un problème d'IntelliJ, mais si vous utilisez SLF4J en tant que bibliothèque dépendante et que vous installez une autre version de la bibliothèque avec runtime, il y a un problème que les deux Jars sont inclus dans Classpath lors du débogage / exécution à partir d'IntelliJ. Il semble. ..
Fondamentalement, ce n'est pas grave si vous avez dependencyManagement.
Tous les projets doivent inclure les modules nécessaires dans diverses bibliothèques de journaux> Sortie avec SLF4J, et exclure la mise en œuvre de diverses bibliothèques de journaux.
build.gradle
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:2.1.8.RELEASE"
}
}
allprojects {
apply plugin: "io.spring.dependency-management"
repositories {
mavenCentral()
}
dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
}
}
}
apply plugin: 'java'
dependencies {
// Used compile/coding time.
implementation 'org.springframework.boot:spring-boot-starter-logging' //En fait démarreur-Souvent inclus dans les dépendances Web
// Used Runtime
runtimeOnly 'org.slf4j:log4j-over-slf4j'
// log4j 1.Seul x doit être acheminé individuellement
//Printemps 2017 pour EOL en 2015-boot-starter-Également supprimé de la journalisation
// https://github.com/spring-projects/spring-boot/issues/11148
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
configurations.all {
exclude group: 'log4j' // = Old only log4j impl.
exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'// = SLF4J > Log4J 2.x. (Apache Side)
exclude group: 'org.slf4j', module: 'slf4j-log4j12' // = SLF4J > Log4J 1.x. (SLF4J Side)
exclude group: 'org.slf4j', module: 'slf4j-jdk14' // = SLF4J > JDK14.
exclude group: 'commons-logging', module: 'commons-logging-api' // Replaced by jcl-over-slf4j
exclude group: 'commons-logging', module: 'commons-logging' // Implementation is not needed.
}
Il est également recommandé de créer un projet de journal uniquement qui inclut les paramètres de journal, etc.
Écrivez plus tard
build.gradle
log/build.gradle