2016-03-23 1 views
-1

Ich möchte ein GRADLE-Skript machen, das den Quellcode über das Internet herunterlädt, wenn und nur wenn du es erstellst (z. B. nicht, wenn du 'claen' tust).Mit Gradle 2.12 (für Java), wie kann Quelldateien herunterladen, wenn und nur wenn "Build"?

Ich kann es grundsätzlich möglich machen und der Download wird nur gemacht, es gibt kein Verzeichnis 'src'. Wenn ich eine Aufgabe mache, die die Quellcodes herunterlädt, dann wird das Herunterladen möglicherweise nicht durchgeführt, wenn Sie "sauber säubern". aber ich möchte, dass das Skript die Codes herunterladen, wenn Sie "Gradle bauen" das ist, warum schreibe ich Skripte, die die Codes in ccompileJava ... , aber wenn ich das tue, wenn Sie 'grade clean', wenn Sie keine haben ein Verzeichnis 'src', Gradle lädt die Codes herunter und löscht sie dann ...

Wie kann ich ein Skript machen, das meinen Wunsch erfüllt ...?

unten ist der Skriptteil mit der Frage verbunden.

compileJava { 
if (!new File('src').exists()){ 
    tasks.downloadZipFile.execute() 
    tasks.downloadAndUnzipFile.execute() 
    file('downloaded/src').renameTo('src') 
    delete 'downloaded' 
} 
} 


clean { delete 'src' } 
+0

Posten Sie, was Sie haben. –

+0

compileJava { \t if (! Neue Datei ('src'). Exists()) { \t \t tasks.downloadZipFile.execute() \t \t tasks.downloadAndUnzipFile.execute() \t \t Datei ('heruntergeladen/src ') .renameTo (' src ') \t \t löschen 'heruntergeladen' \t} } sauber {löschen 'src'} – kensuke1984

+0

Nicht in den Kommentaren. In deiner Frage richtig formatiert. –

Antwort

1

Ihr Code wird während der Konfigurationsphase ausgeführt. So wird es ausgeführt, was auch immer Sie ausführen.

Es sollte stattdessen in der Ausführungsphase ausgeführt werden, sobald Gradle entschieden hat, welche Aufgaben in welcher Reihenfolge ausgeführt werden sollen. Erstellen Sie eine Aufgabe, und machen compileJava auf diese Aufgabe ab, da es vor compileJava ausführen muss:

task downloadSources << { 
    ... 
} 

compileJava { 
    dependsOn downloadSources 
} 

Notiere die << in downloadSources. Das bedeutet, dass das folgende Closing als Teil der Taskausführung und nicht als Teil der Konfiguration ausgeführt wird.

+0

Vielen Dank. Es ist eine ziemliche Antwort, die ich wollte. – kensuke1984

Verwandte Themen