Frage

Ich versuche, meine eigene Aufgabe zu erstellen, die ein Paket aller Artefakte erstellt, die während meines Multiprojekt-Builds generiert wurden.

Was ich derzeit richtig mache, ist nur:

gradle build createPackage

Das ergibt eine Ausgabe wie die folgende:

:test-utility:compileJava UP-TO-DATE
:test-utility:processResources UP-TO-DATE
...
:test-utility:check UP-TO-DATE
:test-utility:build UP-TO-DATE
Creating Package...
Created.

BUILD SUCCESSFUL

Total time: 4.654 secs

Mit dem createPackage Aufgabe ist:

task createPackage {    
    println "Creating Package..."
    println "Created."
}

Ich würde es jedoch gerne einfach machen, indem ich nur einen Befehl ausführe. Was wäre also der beste Weg, dies zu tun und sicherzustellen, dass die Reihenfolge beibehalten wird?

Am liebsten würde ich anrufen build innerhalb der createPackage Aufgabe hinzufügen oder an die anhängen build Aufgabe mit meiner Aufgabe.

War es hilfreich?

Lösung

Ok, wenn man zwischen den Zeilen liest, gibt es ein paar Dinge zu klären

1) Ihre printlns werden in der Konfigurationsphase ausgeführt, nicht in der Ausführungsphase.Sehen http://www.gradle.org/docs/current/userguide/build_lifecycle.html Für mehr Information.

2) Sie haben keine einzige „Build“-Aufgabe. gradle build in der Befehlszeile wird die „Build“-Aufgabe für jedes Ihrer Unterprojekte ausgeführt.Ihre Paketaufgabe müsste von allen abhängen.Etwas wie..

apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   dependsOn subprojects*.build
}

3) Sie können mit Gradle deklarativer vorgehen – sagen Sie ihm einfach, was Sie verpacken möchten, und es wird herausfinden, was es zum Ausführen benötigt.Sie können beispielsweise sagen, dass Sie alle JAR-Dateien Ihrer Unterprojekte komprimieren möchten.

apply plugin: 'java'    
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   from subprojects*.jar
}

Andere Tipps

Es gibt viele Möglichkeiten.Ein Vorschlag ist eine Änderung build abhängig sein von createPackage um sicherzustellen, dass Sie einfach anrufen können gradle build.Dann möchten Sie Ihre Aufgabe erweitern und angeben, was ihre Eingaben sind (wahrscheinlich handelt es sich dabei um Ausgaben einiger anderer Aufgaben wie …). jar).Gradle fügt diese Aufgaben zur Ausführung hinzu, wenn Sie den Build ausführen, und kann sie basierend auf dem aktuellen Status jeder Aufgabe erneut ausführen.Dies ist im Benutzerhandbuch dokumentiert - http://www.gradle.org/docs/current/userguide/more_about_tasks.html#sec:up_to_date_checks und später in einem Kapitel über benutzerdefinierte Aufgaben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top