Ich benutze mehrere Frühjahr basierte Maven Repositories in einem Web-Projekt, und ich habe Probleme mit den Abhängigkeiten von Kind POM verwendet.Vermeiden Sie Kind Abhängigkeiten überschreiben Eltern Abhängigkeiten mit Maven 3
Ich habe ein Elternteil POM wie folgt aus:
<dependencyManagement>
<dependencies>
<!-- SPRING -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SPRING SECURITY -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>4.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SPRING BOOT -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SPRING WS -->
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<!-- OTHER DEPENDENCIES OMITTED -->
</dependencies>
</dependencyManagement>
Und ein Kind POM wie folgt aus:
<dependencies>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<!-- OTHER DEPENDENCIES OMITTED -->
</dependencies>
Soweit mein Verständnis von Maven Ausgrenzung geht, das das übergeordnete des vermeiden sollte Eltern-POM-Version, aber aufgrund der Tatsache, dass Spring-Ws-Sicherheit von einer niedrigeren Version von Spring-Core (4.0.9) abhängt, deren Methode geändert wurde, kann ich die App aufgrund eines NoSuchMethodError nicht auf einem lokalen Tomcat-Server bereitstellen Ausnahme, die auch ausgelöst werden kann, wenn die App tatsächlich bereitgestellt wird t bleibt die Abhängigkeit von der alten Feder-Kern-Version bestehen.
Wie kann ich dieses Überschreiben von Abhängigkeiten vermeiden? Oder gibt es eine Möglichkeit, beide Abhängigkeiten zu verwenden (was, soweit ich gesucht habe, nicht sicher ist)?
Verbindungen bereits besucht:
Similar problem, but from child to parent,
Nur wenige erwähnt, habe ich andere als gut besucht, aber die Links vergessen.
Bearbeiten: Frühjahr-Ws Abhängigkeiten verwenden Frühling 4.0.9, die die Version 4.3.0 überschreibt (die, die ich verwenden muss) Ich habe in der Eltern POM definiert.
+- org.springframework.ws:spring-ws-core:jar:2.2.3.RELEASE:compile
[INFO] | | | +- org.springframework:spring-oxm:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE)
[INFO] | | | +- org.springframework:spring-web:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE)
[INFO] | | | \- org.springframework:spring-webmvc:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE)
Bitte geben Sie an, welche Versionen von Bibliotheken Sie erhalten und welche Versionen Sie erhalten möchten. Sie können 'mvn dependency: tree' ausführen, um Abhängigkeiten aufzulisten. –
Ich habe einige der falschen Abhängigkeiten aufgeführt @AntonKoscejev –
Also basierend auf Ihren Kommentar zu Sundaraj's Antwort Ich bin mir nicht sicher, was genau Sie versuchen zu erreichen. Möchten Sie, dass diese Spring-Artefakte Version 4.3 oder 4.0 sind? Du bekommst 4,3 wegen deiner Eltern, aber du sagst, du willst nicht, dass ein Kindprojekt das ändert, also willst du 4.3 bekommen? Aber Feder-ws 2.2 ist nicht binär kompatibel mit Feder 4.3 und erfordert eine ältere Version. Also müssen Sie entweder 4.0 in Kind verwenden (in Eltern definiert oder in Kind überschrieben), oder Sie benötigen eine Version von Spring-ws, die mit Feder 4.3 binär kompatibel ist. Mit was genau willst du helfen? –