Ich habe ein Projekt abhängig von Netflix Feign und Glassfish Jersey Implementierung.Kann ich Gradle sagen, dass zwei verschiedene Abhängigkeitsmodule tatsächlich gleich sind und es die mit der höchsten Version auswählen?
Feign verwendet die 1.1-Spezifikation von JAX-RS (JSR 311), und Glassfish-Trikot Implementierung verwendet die Spezifikation 2.0. Der 2.0 ist abwärtskompatibel, aber der Name der Gradle-Abhängigkeit wurde geändert.
So habe ich zwei Abhängigkeiten in meinem Projekt:
- javax.ws.rs:jsr311-api:1.1.1
- javax.ws.rs:javax-ws-rs-api:2.0 .1
beiden implementiert die gleichen Klassen in dengleichen Pakete, aber eine nach 1.x und einer entsprechend 2.x
In meinem Java-Code kann ich nur auf den Klassennamen und das Paket hinweisen.
Kann ich Gradle sagen, dass dies tatsächlich das gleiche Paket ist, obwohl der Name anders ist und auf diese Weise nur einen Satz der implementierenden Klassen im Klassenpfad erhält?
Im Moment ist es zufällig, welche Version der Klassen die JVM und der Compiler auswählen. Manchmal kompiliert es nicht, manchmal kompiliert es aber nicht (MethodNotFoundException).
Ich glaube nicht, dass das möglich ist, aber Sie können die alte Abhängigkeit explizit ausschließen. –