Ich habe ein Projekt mit Ant erstellt, das Efeu für das Abhängigkeitsmanagement verwendet. Ich habe keine ivysetting Datei, aber eine ivy.xml
mit der folgenden Abhängigkeit (ich möchte spring mit slf4j anstelle der Commons-Protokollierung verwenden):
<configurations>
<conf name="compile" />
<conf name="runtime" extends="compile"/>
</configurations>
<dependencies>
<dependency org="org.springframework" name="spring-webmvc" rev="3.0.5.RELEASE" conf="compile->default">
<exclude org="commons-logging" name="commons-logging"/>
</dependency>
<dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" conf="compile->default" />
<dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.1" conf="runtime->default" />
</dependencies>
Aber wenn Sie die Kompilierkonfiguration auflösen, commons-logging
ist gelöst. Ich habe auch versucht, den Ausschluss explizit zu verwenden spring-core
Abhängigkeit aber commons-logging
wird immer in den Kompilierklassenpfad eingefügt.
Was ist meine Schuld? Ist es nicht das was Commons-Protokollierung nicht verwenden beschreibt für Maven? Ist es ein Efeu-Bug? Benötige ich eine spezielle Einstellung? Hat Efeu etwas zwischengespeichert? Irgendeine Idee?
Ich verwende Ant 1.8.2 und Ivy 2.2.0. Die Verwendung von IvyDE in Eclipse hat das gleiche Problem.
Antworten:
23 für die Antwort № 1Ihre Verwendung des <exclude />
scheint aus unbekannten Gründen gebrochen zu sein. Ich habe etwas Ähnliches auf meinem PC ausprobiert und folgendes funktioniert:
Versuchen die oberste Ebene ausschließen (was direkt unter <dependencies />
:
<dependencies>
<dependency org="org.springframework" name="spring-webmvc" rev="3.0.5.RELEASE" conf="compile->default">
</dependency>
<dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" conf="compile->default" />
<dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.1" conf="runtime->default" />
<exclude org="commons-logging"/>
</dependencies>
Ich weiß nicht, warum der andere nicht funktioniert. Es gibt einige Fehler in JIRA bezüglich Ausschluss- und Zirkularabhängigkeiten, aber das scheint in diesen Fall nicht zu passen. Vielleicht ist es ein echter Fehler.
0 für die Antwort № 2
Verwenden Sie das Modul anstelle des Namens
<exclude org="commons-logging" module="commons-logging"/>
0 für die Antwort № 3
<exclude name="commons-logging"/>
Wenn der allgemeine Ausschluss oben angegeben ist, funktioniert er möglicherweise besser.