Was ich tun möchte, ist Maven aus einem groovigen Skript aufrufen. Das fragliche Groovy-Skript wird als Maven-Wrapper verwendet, um J2EE-Projekte zu erstellen, indem man ein Tag herunterlädt und Maven auf das herunterlädt, was heruntergeladen wurde. Wie soll ich aufrufen, Maven zu öffnen, um das EAR zu erstellen/zu packen (das groovige Skript ist bereits in der Lage, das Tag von SCM herunterzuladen).Wie mache ich Systembefehlsaufrufe in Java/Groovy?
Antwort
Die einfachste Methode zum Aufrufen eines externen Prozesses in Groovy ist die Verwendung des Befehls execute() in einer Zeichenfolge. Zum Beispiel Maven von einem groovigen Skript auszuführen dies auszuführen:
"cmd /c mvn".execute()
Wenn Sie die Ausgabe des Befehls erfassen möchten und es vielleicht ausdrucken, können Sie dies tun:
print "cmd /c mvn".execute().text
Die ' cmd/c am Start ruft die Windows-Befehlsshell auf. Da mvn.bat ein Batch-Skript ist, benötigen Sie dies. Unter Unix können Sie die Systemshell aufrufen.
Sie können die Runtime-Klasse zum Starten eines Shell-Befehls verwenden. werfen Sie einen Blick hier: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) Sie können später die Ergebnisse der Prozessausführung erfassen (um herauszufinden, ob es fehlgeschlagen ist oder nicht).
Für Java 7+ stdio Umleitung:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
Wenn Sie eine "Liste" von Argumenten übergeben, stellen Sie sicher, dass die Elemente alle 'Zeichenketten' sind und nicht [GString] (http://docs.groovy-lang.org/docs/latest/html/api/groovy/ lang/GString.html) s mit interpolierten Variablen. Vergessen Sie auch nicht "redirectError". – seanf
Es ist so einfach wie
"yourCommand".execute();
tun Wenn Sie Druckausgaben auf dem ausgeführten Befehl auf der Standardausgabe erhalten möchten Sie
tun könnendef proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
Wenn Sie die Ausgabe speichern und verarbeiten möchten, können Sie
tunwenn ich das def homeDir = "c:/test/server"; def workDir = "$ {homeDir}/workDir"; def tempDir = "$ {workDir}/tmp"; println (homeDir); println (Arbeitsverz); runShell ("cd c:"); // runShell ("mkdir -p $ {tempDir}"); void runShell (Zeichenfolge s) { def execute = s.execute(); execute.waitForProcessOutput (System.out, System.err); def Wert = execute.exitValue(); if (val> 0) { neue Exception werfen ("Exit value: $ {value}"); } } Ich bekomme einen Fehler wie unten java.io.IOException: Kann Programm "cd" nicht ausführen: CreateProcess Fehler = 2, Das System kann die angegebene Datei nicht finden – user641887
- 1. Wie mache ich Hintergrundcode?
- 2. Wie mache ich Konfetti?
- 3. Wie mache ich einen Bildkonverter?
- 4. Wie mache ich ein DLOOKUP
- 5. Wie mache ich = GETPIVOTDATA dynamischer?
- 6. Wie mache ich ein Privateigentum?
- 7. Wie mache ich UILabel wordwrap
- 8. Wie mache ich lesbare URLs?
- 9. Wie mache ich eine Schleife in Assembler?
- 10. Wie mache ich benutzerdefinierte Seitennummerierung in Latex?
- 11. Wie mache ich UpdatePanel in ListView arbeiten?
- 12. Wie mache ich verschachtelte Gruppierungen in Django?
- 13. Wie mache ich monkeypatching in Python?
- 14. Wie mache ich Transaktionen in Service Layer
- 15. Wie mache ich li in angularJS aktiv?
- 16. Wie mache ich Klassenmethoden/Eigenschaften in Swift?
- 17. Wie mache ich boundingRect() in einer Bogenform?
- 18. Wie mache ich Multithreading in Python?
- 19. Wie mache ich HTML-Code in Farbe?
- 20. Wie mache ich ein Quadrat in C++
- 21. Wie mache ich Balloon ToolTip in SilverlightApplication?
- 22. Wie mache ich linkTo dynamisch in ember?
- 23. Wie mache ich das in Unity?
- 24. Wie mache ich Timer in Java?
- 25. Wie mache ich Iterationen in R?
- 26. Wie mache ich Colormap-Effekt in Javafx?
- 27. Wie mache ich Radio-Buttons in Angular
- 28. Sails.Js - Wie mache ich Paginierung in sails.Js
- 29. In gehen, wie mache ich globale Variablen
- 30. Wie mache ich Gif in Pygame?
Cool! Ich wusste nicht, dass du das kannst. – armandino
Das hat erstmal für mich funktioniert. Ging die Route "consumeProcessOutput()" für eine Weile runter, hatte aber keine Würfel damit. Dies hilft sehr bei der Ermittlung der Gründe für das Fehlschlagen des Docker-Builds. – eversMcc