gradle tar-Task wurde nicht ausgeführt

8

Ich schreibe einen Gradle-Build für ein Nicht-Java-Projekt, um vorhandene Verzeichnisse und tar-Archive in eine .tar.gz-Datei zu mappen. Die tar-Task überspringt, wenn ich die Definition so verwende:

%Vor%

Hier ist die Konsolenausgabe

%Vor%

Wenn ich versuche, die tar-Aufgabe als Methode zu verwenden, schlägt die Beschwerde fehl, die Methode

kann nicht gefunden werden %Vor%

Können wir die tar-Task auf die gleiche Weise ausführen, wie Gradle das Ausführen von copy erlaubt? Im selben Build habe ich einen Block wie folgt und ich möchte wissen, ob Teer auf die gleiche Weise verwendet werden kann

%Vor%

Wenn nicht, wie stelle ich sicher, dass mein Build nicht die Task "tar überspringen", wenn das oben beschriebene erste Formular verwendet wird.

    
Anadi Misra 19.07.2012, 10:25
quelle

2 Antworten

11

Sie haben sich auf den klassischen Fehler gefasst, eine Aufgabe in der Ausführungsphase anstatt in der Konfigurationsphase zu konfigurieren. Die Lösung besteht darin, das << im ersten Code-Snippet zu entfernen.

Wenn Sie das << (und den Unterschied, den es macht) verwirren, ist es eine gute Lösung, niemals << , sondern immer das explizite doLast {} zu verwenden.

Es gibt keine tar -Methode, aber es ist normalerweise besser, diese Dinge trotzdem zu einer separaten Aufgabe zu machen. (Methoden wie copy sollten gegenüber der entsprechenden Aufgabe nur dann bevorzugt werden, wenn es einen starken Grund gibt.)

    
Peter Niederwieser 19.07.2012, 10:44
quelle
0

Ich hatte eine witzige Situation, in der ich bei der Verwendung von doLast {} auf eine tar-Aufgabe traf.

Es war wegen einer Multi-Projekt-Build:

%Vor%

In diesem Fall, wenn Sie versuchen, eine tar oder eine copy Aufgabe in der Haupt-Build-Datei zu haben, die etwas von dieser project(":sub-project") referenziert, wird es den Entwickler dazu verleiten, es in doLast zu verpacken.

Zum Beispiel hat die Hauptdatei build.gradle:

%Vor%

Sie haben also einen Fehler bekommen, dass project(":sub-project").war nicht existiert. Um es zu umgehen, setzte jemand doLast {} auf die Aufgabe und Fehler gingen weg. SCHLECHT !!

%Vor%

Dann musste ich es reparieren. Also war es richtig, es hinzuzufügen

evaluationDependsOn ":sub-project"

In der Hauptdatei build.gradle. Jetzt weiß es, es zu bewerten. Ich entferne den inkorrekten doLast{} Block und jetzt wird die Aufgabe nicht mehr ignoriert.

    
Nicholas DiPiazza 31.03.2017 02:35
quelle

Tags und Links