2016-04-08 3 views
0

Wir hatten einen Fehler, wodurch unser Logger aufgehört hat, etwas zu tun. Am Ende verfolgten wir es zu einer externen Abhängigkeit, sagen wir:Ausschließen von Paket aus einem externen Glas in maven Assembly gezogen werden

, die ihre eigene slf4j Implementierung hat. Ich hatte unseren Pom geändert, daher wurde diese Abhängigkeit zuerst aufgelistet, was den Fehler ausgelöst hat. Durch das Verschieben der Abhängigkeit zurück in die Liste wurde das Problem zuletzt behoben (so dass die übliche log4j-Implementierung verwendet wurde).

Dies scheint wie eine sehr fragile Lösung. Der "richtige" Fix scheint zu sein, das Maven Assembly Plugin dazu zu bringen, aus der Datei alice.jar jede Datei aus dem org.slf4j Paket auszuschließen. Wir haben versucht, etwas zu unserer benutzerdefinierten Assembly-XML-Datei hinzuzufügen, z. B .:

<dependencySets> 
    <dependencySet> 
     <unpack>true</unpack> 
     <unpackOptions> 
      <excludes> 
       <exclude>com.bob:alice:org/slf4j/*</exclude> 

Allerdings hat dies nicht funktioniert. Das Beste, was ich tun konnte, war:

   <exclude>org/slf4j/*</exclude> 

Aber dies schließt alle Kopien des Pakets, das ist natürlich alles bricht.

Was ist der richtige Weg, diesen Ausschluss zu machen?

Antwort

0

versuchen Sie dies:

<dependency> 
     <groupId>com.bob</groupId> 
     <artifactId>alice</artifactId> 
     <version>1.2.3</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
     </exclusions>  
</dependency> 

Und dann die Abhängigkeit slf4j wie folgt hinzufügen: (Sie können die Version des slf4j ändern)

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
</dependency> 
+0

Nein, sorry, ich sollte klar sein! Das Alice-Artefakt zieht _not_ nicht als Abhängigkeit in den slf4j. Es enthält seine eigene, benutzerdefinierte Implementierung. Das Öffnen der Datei alice.jar zeigt also ein Verzeichnis org/slf4j mit einer LoggerFactory.class usw. –

Verwandte Themen