2013-04-02 2 views
-1

J'ai un projet Maven qui a la dépendance directe comme suit:Maven picking mauvaise version SLF4J

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
    <scope>compile</scope> 
    <optional>false</optional> 
</dependency> 

mais malgré cela, la mvn dependency:tree montre la version slf4j-api choisie comme 1.6.2, et que la dépendance directe à mon projet !

Il existe d'autres dépendances dans mon projet qui peuvent dépendre d'une autre version de slf4j. Mais je crois comprendre que la version spécifiée la plus proche de la racine de l'arbre est prise en compte.

Autres dépendances sur slf4j choses connexes sont org.slf4j:jul-to-slf4j:jar:1.7.5:compile, org.slf4j:log4j-over-slf4j:jar:1.7.5:compile (dépendances directes) et org.slf4j:jcl-over-slf4j:jar:1.7.3:runtime (dépendance transitive)

Je construis un war dans ce projet Maven, et le pot de slf4j inclus est à 1.6.2 dans l'archive . Je ne sais pas quoi faire pour m'assurer que je reçois la version de pot 1.7.5 et non 1.6.2. Mise à jour: J'utilise maven 3.0.4.

Mise à jour 2: Comme demandé, les journaux pom et de débogage sont ajoutés. Étant donné que les fichiers étaient énormes, je l'ai ajouté à la boîte de dépôt Dossier public: https://www.dropbox.com/sh/w1rtgvxvnt4jf18/lbiMIgwWD_

+0

Il peut y avoir une autre dépendance _requiring_ version 1.6.2 spécifiquement ' [1.6.2]' ... Heres un bon écrire: http://guntherpopp.blogspot.com/2011/02/understanding-maven -dependency.html – Lucas

+0

@Lucas comment quelqu'un exige spécifiquement 1.6.2? Si quelqu'un donnait la version [1.6.2] entre crochets, cela ne permettrait pas de résoudre les dépendances. Mais la construction est réussie. Btw, j'ai déjà lu ce document en essayant de chercher des solutions sur google :-) – Aman

+0

Possible dupliquer: [Maven: supprimer une seule dépendance transitive] (http://stackoverflow.com/questions/816858/maven-remove-a-single -transitive-dependency) –

Répondre

0

En effet, les règles de proximité s'appliquent pour que la déclaration la plus proche du projet en cours gagne. Vous voudrez peut-être supprimer l'élément <optional>false</optional> et voir si cela fait une différence.

+0

ne fonctionne pas :-(Cela ne fonctionnait pas avant, et je l'ai ajouté pour voir si cela fonctionne. – Aman