Ich versuche, jar zu erstellen und danach in einen anderen Ordner zu kopieren.
Aber ich kann ein Problem nicht lösen. copyJarToBin Aufgabe versuche altes Glas zu kopieren. Wenn ich einen Ordner im Projekt lösche / erstelle und die Aufgabe buildApp () ausführe, erzeugt der Task createJar () die .jar-Datei, aber copyJarToBin () findet diese .jar-Datei nicht.
Könnten Sie mir helfen?
Danke.
Der Schuldige ist Ihre copyJarToBin
Aufgabe. wenn du es tust
Sie kopieren das Glas während der Konfigurationszeit mit der Methode copy
. (Weitere Informationen zum Build Lifecycle finden Sie im Benutzerhandbuch zu Gravel bei Ссылка )
Sie möchten die eigentliche Kopieroperation während der Ausführungsphase (der Ausführung der Aufgabe) ausführen.
Eine Möglichkeit, das zu lösen, besteht darin, den Aufruf der Methode copy
in einen doLast-Block zu verschieben:
Das Problem bei diesem Ansatz besteht darin, dass Sie nicht von der inkrementellen inkrementellen Build-Funktion profitieren und diese Datei jedes Mal kopieren, wenn Sie die Aufgabe ausführen, obwohl sich die Datei nicht geändert hat.
Eine bessere und idionischere Methode zum Schreiben Ihrer copyJarToBin-Aufgabe besteht darin, Ihre Aufgabenimplementierung so zu ändern, dass sie den Aufgabentyp Copy
verwendet:
Wir können diesen Snippet sogar verbessern, indem wir die Autowire-Funktion von Gradle nutzen. Sie können die Ausgabe einer Aufgabe als Eingabe für eine andere Aufgabe deklarieren. Anstatt "build / libs / GradleJarProject.jar" zu schreiben, können Sie einfach Folgendes tun:
%Vor% Nun müssen Sie sich nicht mehr um die Aufgabenbestellung kümmern, denn Sie wissen, dass die createJar
Aufgabe ausgeführt werden muss, bevor die copyJarToBin
Aufgabe ausgeführt werden kann.
Sie müssen wahrscheinlich sicherstellen, dass sie in der richtigen Reihenfolge ausgeführt werden,
%Vor%