Co chcę zrobić, to przywołać mave'a z pysznego skryptu. Ten groovy skrypt jest używany jako opakowanie do tworzenia projektów J2EE przez pobranie znacznika i wywołanie narzędzia na pobranym pliku. W jaki sposób powinienem wykonać wywoływanie programu maven do budowania/pakowania EAR (ten groovy skrypt jest już w stanie pobrać tag z SCM).Jak wykonywać wywołania systemowe w języku Java/Groovy?
Odpowiedz
Najprostszym sposobem wywołania procesu zewnętrznego w Groovy jest użycie komendy execute() na łańcuchu. Na przykład, aby wykonać Maven z groovy skryptu uruchomić to:
"cmd /c mvn".execute()
Jeśli chcesz przechwytywać dane wyjściowe polecenia i może go wydrukować, można to zrobić:
print "cmd /c mvn".execute().text
The ' cmd/c 'na początku wywołuje powłokę poleceń systemu Windows. Ponieważ mvn.bat jest skryptem wsadowym, potrzebujesz tego. W systemie Unix można wywołać powłokę systemu.
Możesz użyć klasy Runtime, aby uruchomić polecenie powłoki. spójrz tutaj: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) Możesz później przechwycić wyniki procesu (aby sprawdzić, czy się nie udało).
Java 7+ stdio przekierowanie:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
Jeśli przekazujesz "listę" argumentów, upewnij się, że wszystkie elementy to 'String's, a nie [GString] (http://docs.groovy-lang.org/docs/latest/html/api/groovy/ lang/GString.html) s ze zmiennymi interpolowanymi. Nie zapomnij również o 'redirectError'. – seanf
Jest to tak proste, jak robi
"yourCommand".execute();
Jeśli chcesz uzyskać wyjść z tuszem na wykonywanego polecenia na standardowe wyjście można zrobić
def proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
Jeśli chcesz przechowywać i przetwarzać dane wyjściowe, możesz wykonać
def proc = "yourCommand".execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err);
println(outputStream .toString());
kiedy robię to def homeDir = "c:/test/server"; def workDir = "$ {homeDir}/workDir"; def tempDir = "$ {workDir}/tmp"; println (homeDir); println (workDir); runShell ("cd c:"); // runShell ("mkdir -p $ {tempDir}"); void runShell (String s) { def execute = s.execute(); execute.waitForProcessOutput (System.out, System.err); def wartość = execute.exitValue(); if (val> 0) { throw new Exception ("Wartość wyjścia: $ {wartość}"); } } } Występuje błąd poniżej: java.io.IOException: Nie można uruchomić programu "cd": CreateProcess error = 2, System nie może odnaleźć określonego pliku – user641887
- 1. Wywołania systemowe w oknach i natywnym API?
- 2. W python, w jaki sposób mogę wykonać nieblokujące wywołanie systemowe?
- 3. W języku Python - jak wykonać polecenie systemowe bez wyjścia
- 4. W jaki sposób wywołania systemowe są przerywane sygnałem?
- 5. Wywołanie systemowe w ARM
- 6. Dostępne i używane pamięci systemowe w języku Python?
- 7. Czy Android: exported = "false" ogranicza wywołania systemowe/dostęp?
- 8. Czy AsyncHttpClient może wykonywać nieblokujące, asynchroniczne wywołania HTTP?
- 9. Czy mogę wykonywać asynchroniczne wywołania ODBC? Wszelkie materiały referencyjne?
- 10. Wywołania metody analizy porównawczej w języku C#
- 11. Niestandardowe wywołania zwrotne w języku VBA
- 12. Metoda wywołania czasowego w języku Python
- 13. jak ukryć wyjście systemowe()
- 14. Jak wykonywać nieodebrane połączenia?
- 15. Dźwięki systemowe w Javie
- 16. Jak mogę wywołać systemowe wywołanie systemu Linux/UNIX w golang
- 17. Jak określić minimalne wymagania systemowe?
- 18. Jak untaint wywołanie systemowe w CGI.pm
- 19. Jak odzyskać przydatne informacje systemowe w java?
- 20. Jak usunąć menu systemowe w WPF?
- 21. Jak wykonywać operacje podczas odtwarzania dźwięku w telefonie iPhone?
- 22. Jak przechwycić wywołania systemowe z mojej aplikacji na Androida (nierootowane urządzenie)
- 23. jak pisać i wykonywać wątek
- 24. Jak wykonywać wyliczenia w Rails 3?
- 25. Dodawanie niestandardowego SOAPHeader w języku C# do wywołania usługi internetowej
- 26. Kodowanie systemowe System.out
- 27. wywołanie systemowe awk
- 28. open() wywołanie systemowe polimorfizm
- 29. Wymagania systemowe serwera solr?
- 30. Asynchroniczne wywołania cuBLAS
Super! Nie wiedziałem, że możesz to zrobić. – armandino
To zadziałało dla mnie po raz pierwszy. Poszedłem na ścieżkę procesu "consumeProcessOutput()", ale nie miałem z tym żadnej kości. Pomoże to w ustaleniu przyczyn niepowodzenia kompilacji Docker. – eversMcc