Der richtige Weg ist, den Ausschließungsmechanismus zu verwenden, aber manchmal möchten Sie vielleicht lieber den folgenden Hack verwenden, um das Hinzufügen einer großen Anzahl von Ausschlüssen zu vermeiden, wenn viele Artefakte dieselbe transitive Abhängigkeit haben, die Sie ignorieren möchten. Anstatt einen Ausschluss anzugeben, definieren Sie eine zusätzliche Abhängigkeit mit dem Umfang "bereitgestellt". Dies teilt Maven mit, dass Sie dieses Artefakt zur Laufzeit manuell bereitstellen werden und es daher nicht gepackt wird. Zum Beispiel:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
Nebeneffekt: Sie müssen eine Version des angeben Artefakt-zu-sein-ignoriert und seine POM wird zur Buildzeit abgerufen werden; Dies ist bei regulären Ausschlüssen nicht der Fall. Dies könnte ein Problem für Sie sein, wenn Sie Ihr privates Maven-Repository hinter einer Firewall ausführen.
Ich habe versucht, Servlet-API aus einer Jar Abhängigkeit durch die Ole Methode auszuschließen und das hat nicht funktioniert für mich, aber versuchte diese Methode und es hat den Trick. Vielen Dank. –
Aaron
das funktionierte für mich, als ich eine Abhängigkeit basierend auf einem ausschließen musste. Vielen Dank! –
Sie könnten auch den Geltungsbereich _system_ verwenden, wenn Ihre Abhängigkeit in der JRE enthalten ist. Zum Beispiel mit jaxb-api 2.0 und JRE 6. Siehe [Maven Systemabhängigkeiten] (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies) –