slf4j conflit de version lors de la construction avec Maven
J'ai réalisé que l'un de mes projets utilise slf4j 1.5.8 et Hibernate utilise slf4j 1.6. Lors de la construction avec Maven, il télécharge les deux pots mais je suppose que les fichiers de classe de 1.5.8 sont utilisés. Donc, quand je lance le programme, j'obtiens l'erreur suivante:
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]
Dans pom.xml
j'ai mis
<dependencyManagement>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
</dependencyManagement>
La 1.5.8 fait partie de la dépendance, de sorte qu'il est téléchargé sur son propre.
- Avez-vous
clean
en premier? - oui, je ne mvn clean install
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez découvert vous-même, il y a deux bibliothèques (mise en veille prolongée et quelques autres) de manière transitive de l'importation de SLF4J dans deux versions différentes. Malheureusement, l'ancienne version est capté par maven (il y a quelques règles de dépendance doit être choisi par maven dans cette situation). La solution est d'ajouter le
exclusion
dans la dépendance des importations ancienne version de SLF4J (com.example:foo-bar
est l'exemple ici):Si vous rencontrez toujours ce problème, une question:
Look pour la version 1.5.8 et de l'exclure de toutes les bibliothèques de l'importation.
L'exclusion est tout à fait inutile et peut-être tout à fait trompeur. Au lieu de cela, explicitement inclure la slf4j-api avec la version souhaitée dans vos projets pom fichier. Ça y est!
Cette approche tire parti de Maven de la transitivité des règles: le plus proche de la dépendance de la déclaration de victoires.
vous pouvez exclure la mauvaise version avec quelque chose comme ceci: