[FIXED] Wie ersetzt man ein lokal nicht verfügbares Repository in Gradle?

Ausgabe

Für ein Projekt muss ich ein JAR aus einem Repository abrufen, das nur im Kundennetzwerk verfügbar ist. Da dies in öffentlichen Repositorys nicht verfügbar ist und ich lokal keinen Zugriff auf das Kundennetzwerk habe, möchte ich dieses Repository lokal ersetzen.

Ich kopierte das Glas in ein lokales Repository und deklarierte es mit:

maven {
    url = uri("${project.getRootDir()}/local_repo")
}

Das funktioniert gut, aber ich möchte die Build-Dateien und die Logik gleich halten, unabhängig davon, ob ich sie lokal oder auf dem Kundensystem ausführe.

Laut Gradle Docs werden Repositories in der Reihenfolge aufgerufen, in der sie deklariert sind. Nach dieser Logik deklariere ich also zuerst MavenCentral, dann das Kunden-Repository (das lokal nicht verfügbar ist) und dann mein eigenes lokales Ersatz-Repository:

mavenCentral()
maven {
    url = uri(<customer_repo>)
}
maven {
    url = uri("${project.getRootDir()}/local_repo")
}

Aber es scheint jetzt, dass Gradle stoppt, wenn es das nicht verfügbare Repo nicht erreichen kann und daher das JAR nicht im lokalen Repo findet. Wenn ich das lokale und das nicht verfügbare Repo umdrehe, funktioniert es wieder, aber auf diese Weise wird immer das lokale Repo verwendet, auch auf dem Kundensystem gemäß den Gradle-Dokumenten.

Gibt es eine Möglichkeit, Gradle anzuweisen, sich die anderen Repos anzusehen, auch wenn eines nicht verfügbar ist, oder gibt es eine andere Möglichkeit, ein nicht verfügbares Repo zu ersetzen?

Lösung

Probieren Sie dies aus, fügen Sie ein Flag wie localRepozu Ihrem hinzu, gradle.propertieswenn Sie lokal bauen, dann können Sie eine ifAnweisung für Ihren repositoriesBlock verwenden, siehe unten als Beispiel:

repositories {
    mavenCentral()
    if( project.hasProperty('localRepo') ) {
        maven { url = uri("${project.getRootDir()}/local_repo") }
    } else {
        maven { url = uri(<customer_repo>) }
    }
}

Dadurch wird sichergestellt, dass das Projekt zwischen Systemen portierbar ist


Beantwortet von –
djmonki


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

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

You May Also Like