Ich habe die größte Zeit zu versuchen, herauszufinden, wie man einen Shell-Befehl von Gradle ausführen, da es wie Gradle macht es sehr schwierig, dies zu tun. HierLaufender Shell-Befehl von Gradle Skript
ist der Befehl:
git branch --merged | grep -v \* | grep -v master | grep -v develop | grep -v dmz | xargs git branch -D
Es ist nur eine Bequemlichkeit Befehl Ortsvereine zu bereinigen, die zusammengeführt wurden. Hier
ist die Aufgabe, die ich erstellt:
task gitCleanLocalBranches {
doLast {
exec {
workingDir '.'
commandLine 'git branch --merged | grep -v \\* | grep -v master | grep -v develop | grep -v dmz | xargs git branch -D'
}
}
}
Die Aufgabe schlägt mit:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':gitCleanLocalBranches'.
> A problem occurred starting process 'command 'git branch -a''
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':gitCleanLocalBranches'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
...
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'git branch --merged | grep -v \* | grep -v master | grep -v develop | grep -v dmz | xargs git branch -D''
at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:222)
... 3 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'git branch --merged | grep -v \* | grep -v master | grep -v develop | grep -v dmz | xargs git branch -D'
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
... 4 more
Caused by: java.io.IOException: Cannot run program "git branch --merged | grep -v \* | grep -v master | grep -v develop | grep -v dmz | xargs git branch -D" (in directory "/home/wlaw/sterlib"): error=2, No such file or directory
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
... 6 more
Caused by: java.io.IOException: error=2, No such file or directory
... 7 more
Also dachte ich, dass der Befehl zu kompliziert ist, so habe ich versucht, etwas einfacher, und änderte commandLine
zu:
commandLine 'git branch -a'
Aber ich habe genau den gleichen Fehler. Warum kann Gradle in der Umgebungsvariablen PATH
nichts finden?
Zu Ihrem ersten Punkt, das ist sicherlich ärgerlich und so scheinbar unnötig kompliziert, vor allem für einzelne Befehle mit vielen Argumenten. Aber zu deinem zweiten Punkt hoffte das etwas, was ich nicht tun müsste, da dies wirklich nur ein Einzeiler ist, wodurch eine ganze neue Datei Gradle's Problem zu umgehen scheint, da es nicht möglich ist, nur einen Shell-Befehl auszuführen in build.gradle. – wheeler
re: einfach einen Shell-Befehl ausführen. In Unix werden Pipes zum Trennen mehrerer Befehle verwendet. Sie können es einen Einzeiler nennen, wenn Sie mögen, aber es stellt immer noch mehrere Befehle dar. –
@wheeler Ich habe meiner Antwort zwei weitere Alternativen hinzugefügt, die für Sie geeignet sein könnten. – janos