Điều tôi muốn làm là gọi maven từ một tập lệnh hấp dẫn. Kịch bản lệnh groovy được đề cập được sử dụng như một trình bao bọc maven để xây dựng các dự án J2EE bằng cách tải xuống một thẻ và gọi maven về những gì đã được tải xuống. Làm thế nào tôi nên thực hiện gọi maven để xây dựng/gói EAR (kịch bản groovy đã có khả năng tải xuống thẻ từ SCM).Làm thế nào để thực hiện lệnh gọi hệ thống trong Java/Groovy?
Trả lời
Cách đơn giản nhất để gọi quy trình bên ngoài trong Groovy là sử dụng lệnh execute() trên một chuỗi. Ví dụ, để thực hiện maven từ một kịch bản hấp dẫn chạy này:
"cmd /c mvn".execute()
Nếu bạn muốn bắt đầu ra của lệnh và có thể in ra, bạn có thể làm điều này:
print "cmd /c mvn".execute().text
Các ' cmd/c 'lúc bắt đầu gọi shell của Windows. Vì mvn.bat là một tập lệnh batch bạn cần. Đối với Unix bạn có thể gọi trình bao hệ thống.
Bạn có thể sử dụng lớp Thời gian chạy để khởi chạy lệnh trình bao. Hãy xem tại đây: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) Sau đó bạn có thể nắm bắt được kết quả của quá trình thực hiện Quy trình (để tìm hiểu xem nó có thất bại hay không).
Đối với Java 7+ stdio chuyển hướng:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
Nếu bạn chuyển vào một 'Danh sách' của arg, hãy đảm bảo rằng các phần tử là tất cả' Chuỗi 'và không phải [GString] (http://docs.groovy-lang.org/docs/latest/html/api/groovy/ lang/GString.html) s với các biến nội suy. Cũng đừng quên 'redirectError'. – seanf
Nó cũng đơn giản như làm
"yourCommand".execute();
Nếu bạn muốn để có được kết quả đầu ra in trên lệnh thực thi trên đầu ra tiêu chuẩn bạn có thể làm
def proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
Nếu bạn muốn lưu trữ và xử lý đầu ra, bạn có thể làm
def proc = "yourCommand".execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err);
println(outputStream .toString());
khi tôi làm điều này 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 (Chuỗi s) { def execute = s.execute(); execute.waitForProcessOutput (System.out, System.err); def value = execute.exitValue(); nếu (val> 0) { ném ngoại lệ mới ("Giá trị thoát: $ {value}"); } } Tôi gặp lỗi dưới đây java.io.IOException: Không thể chạy chương trình "cd": Lỗi CreateProcess = 2, Hệ thống không thể tìm thấy tệp được chỉ định – user641887
- 1. Làm thế nào để sử dụng đúng hệ thống() để thực hiện một lệnh trong C++?
- 2. Làm thế nào để untaint gọi hệ thống trong CGI.pm
- 3. Làm thế nào để thực hiện một chương trình C++ nghe lệnh hệ thống
- 4. Sử dụng một hệ thống đơn() Gọi để thực hiện nhiều lệnh trong C
- 5. Cuộc gọi hệ thống trong Linux được thực hiện như thế nào?
- 6. Làm thế nào để bạn thực hiện một lệnh trên hệ thống từ xa để chèn mã BASH?
- 7. về ngã ba và thực hiện cuộc gọi hệ thống
- 8. Làm thế nào để thực hiện lệnh shell trong Javascript
- 9. Làm thế nào để thực hiện các lệnh hệ thống (linux/bsd) bằng cách sử dụng Java
- 10. Làm thế nào để thực hiện cuộc gọi hệ thống của riêng tôi mà không biên dịch lại nhân Linux?
- 11. Cú pháp đúng của Ruby để thực hiện cuộc gọi hệ thống là gì?
- 12. Làm cách nào để thực hiện thay đổi lược đồ trong hệ thống lưu trữ NOSQL
- 13. Làm thế nào để có được người dùng hệ thống trong kiến (trong nhật thực)?
- 14. Làm thế nào để phát hiện hệ điều hành trong một tập tin thực hiện?
- 15. Làm thế nào để nắm bắt được kết quả của một cuộc gọi hệ thống trong một biến hệ vỏ?
- 16. Làm thế nào để thực hiện các hoạt động hệ thống tập tin trong giao dịch với php?
- 17. Cách thực hiện cuộc gọi hệ thống và đọc stdout, trong D?
- 18. làm thế nào để thực hiện lệnh SSH để timeout
- 19. hệ thống awk gọi
- 20. Làm thế nào để loại bỏ quá trình nền từ cuộc gọi chức năng hệ thống
- 21. Thực hiện các cuộc gọi/bẫy hệ thống trong nguồn hạt nhân Linux
- 22. Gọi hệ thống trong ARM
- 23. Làm thế nào để bạn nhận được đầu ra của một lệnh hệ thống trong Go?
- 24. Làm thế nào để chạy một lệnh hệ thống trong Qt?
- 25. làm thế nào để thêm một hệ thống gọi/tiện ích trong xv6
- 26. Cuộc gọi hệ thống trên Windows
- 27. Làm thế nào để thực hiện các lệnh gọi API Windows bằng Python 3.1?
- 28. Làm thế nào để cấm các cuộc gọi hệ thống, GNU/Linux
- 29. Làm thế nào để thực hiện cuộc gọi nhỡ?
- 30. C++ hệ thống linux lệnh
Tuyệt! Không biết bạn có thể làm điều đó. – armandino
Lần đầu tiên tôi làm việc này. Đã đi xuống quá trình "consumProcessOutput()" lộ trình một lúc nhưng không có xúc xắc với điều đó. Điều này sẽ giúp ích rất nhiều với việc xác định lý do tạo Docker không thành công. – eversMcc