Ausgabe
Ich kann mit Gradle keine Version einer Abhängigkeit erzwingen. Mein Ziel ist es, die Version 0.20.0.RELEASE
der Spring HATEOAS-Bibliothek zu verwenden, aber trotz all meiner Bemühungen löst sie sich immer wieder in 0.19.0.RELEASE
.
Ich habe eine Reihe von Strategien ausprobiert, sowohl isoliert als auch in Kombination miteinander. Zu diesen Strategien gehören unter anderem die folgenden (beachten Sie, dass sie in allen Fällen $springHateoasVersion
in der gradle.properties
Datei definiert sind, die sich in dem Verzeichnis befindet, das das übergeordnete Verzeichnis des Moduls ist, das die Spring HATEOAS-Abhängigkeit deklariert):
#1 (in der build.gradle
Datei für das Modul, das die Abhängigkeit deklariert)
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
dependencies {
dependency group:'org.springframework.hateoas', name:'spring-hateoas', version:"$springHateoasVersion"
}
}
#2 (in der build.gradle
Datei für das Modul, das die Abhängigkeit deklariert)
compile ("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") { force = true }
#3 (in der build.gradle
Datei des übergeordneten Verzeichnisses)
subprojects {
configurations.all {
resolutionStrategy {
force "org.springframework.hateoas:spring-hateoas:$springHateoasVersion"
}
}
}
Ich habe mein Bestes getan, um dieses Problem zu untersuchen:
Diese Frage hat eine akzeptierte Antwort, scheint aber keine genaue Übereinstimmung mit dem Problem zu sein, das ich habe: Wie kann ich Gradle zwingen, dieselbe Version für zwei Abhängigkeiten festzulegen?
Keine dieser Fragen scheint akzeptierte Antworten zu haben: 1) Gradle berücksichtigt nicht resolutionStrategy.force , 2) Das Erzwingen einer Modulversion hat keine Auswirkung auf die generierte org.eclipse.wst.common.component .
Neben der Tatsache, dass mein Projekt kaputt ist (weil ich die falsche Version von Spring HATEOAS verwende), kann ich explizit sehen, dass Gradle trotz aller meiner Beteuerungen “bewusst” die falsche Abhängigkeitsversion auswählt. Beim Ausführen ./gradlew dependencyInsight --dependency spring-hateoas
sehe ich folgende Ausgabe:
org.springframework.hateoas:spring-hateoas:0.19.0.RELEASE (selected by rule)
org.springframework.hateoas:spring-hateoas:0.20.0.RELEASE -> 0.19.0.RELEASE
\--- project :Commons
\--- compile
Trotz des Namens gibt die dependencyInsight
Aufgabe überraschend wenig Aufschluss darüber, welche Regel Gradle dazu veranlasst hat, die unangemessene Abhängigkeitsversion auszuwählen, geschweige denn, wie ich diese Regel umgehen könnte.
Lösung
Die Lösung für dieses Problem habe ich hier gefunden . Das war natürlich das einzige, was ich nicht ausprobiert habe, weil es “nicht materiell schien”. :-/
Damit die Dinge funktionieren, habe ich Folgendes zur build.gradle
Datei des übergeordneten Verzeichnisses hinzugefügt (relativ zum Verzeichnis für das Modul, das die Abhängigkeit von Spring HATEOAS deklariert hat).
subprojects {
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
applyMavenExclusions false
}
ext['spring-hateoas.version'] = "$springHateoasVersion"
}
Beantwortet von – Dan Forbes
Antwort geprüft von – Robin (FixError Admin)