2016-04-28 20 views
2

Ich habe die folgende Großtasks Aufgabe, die eine Abhängigkeit entpackt, die auf tmp heruntergeladen wurde.Gradle - Entpacken neueste Version der Abhängigkeit

task unzip(type: Copy) { 
    def zipFile = file('tmp/dist-1.0.1.zip') 
    def outDir = file("unpacked/dist") 

    from zipTree(zipFile) 
    into outDir 
} 

Aber ich bin auf der Suche die neueste Version der Abhängigkeit eher als eine bestimmte Version (das heißt das Skript herunterladen dist-1.0.+) zum Download bereit.

Gibt es eine Möglichkeit, die Abhängigkeit zu entpacken, egal welche Version der Abhängigkeit heruntergeladen wurde?

+0

Um herauszufinden, was die letzte Version einer Abhängigkeit ist, ist es zur Laufzeit wahrscheinlich am besten, den Abhängigkeitsauflösungsmechanismus von Gradle zu verwenden. – RaGe

Antwort

3

eine neue Konfiguration hinzufügen, um nicht vorhandene Projektkonfigurationen verschmutzen:

configurations{ 
    download 
} 

eine Abhängigkeit in die deklarierten Konfiguration hinzufügen, mit Wildcard-Version nach Wunsch. Nur + für Version verwendet, wird die neueste Version in dem angegebenen Repositories erhalten:

dependencies{ 
    download `foo:bar:+` 
} 

Dekomprimieren die aufgelöste Abhängigkeit:

task unzip(type: Copy) { 
    def zipPath = project.configurations.download.find {it.name.startsWith('bar') } 
    def zipFile = file(zipPath) 
    def outDir = file("unpacked/dist") 

    from zipTree(zipFile) 
    into outDir 
} 

Hinweis: es in der Regel eine schlechte Praxis ist Wildcard in Projektabhängigkeit zu verwenden Versionen. Dies macht den Build nicht deterministisch - wenn eine neuere Version einer Abhängigkeit mit brechenden Änderungen im Quell-Repo veröffentlicht wird, könnte dies Ihren Build zerstören.

Verwandte Themen