[FIXED] Gradle ehrt die erzwungene Abhängigkeitsversion nicht

Ausgabe

Ich kann mit Gradle keine Version einer Abhängigkeit erzwingen. Mein Ziel ist es, die Version 0.20.0.RELEASEder 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 $springHateoasVersionin der gradle.propertiesDatei 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.gradleDatei 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.gradleDatei für das Modul, das die Abhängigkeit deklariert)

compile ("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") { force = true }

#3 (in der build.gradleDatei 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-hateoassehe 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 dependencyInsightAufgabe ü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.gradleDatei 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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like