How to make System command calls in Java/Groovy?

前端 未结 4 1629
眼角桃花
眼角桃花 2021-01-31 16:01

What I want to do is invoke maven from a groovy script. The groovy script in question is used as a maven wrapper to build J2EE projects by downloading a tag and invoking maven o

相关标签:
4条回答
  • 2021-01-31 16:16

    You may use Runtime class to launch a shell command. take a look here: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) You may later capture the results of the Process execution (to find out if it failed or not).

    0 讨论(0)
  • 2021-01-31 16:28

    It is as simple as doing

    "yourCommand".execute();
    

    If you want to get print outputs on the executed command on standard output you can do

    def proc = "yourCommand".execute();
    proc.waitForProcessOutput(System.out, System.err);
    

    If you want to store and process the output you can do

    def proc = "yourCommand".execute();
    def outputStream = new StringBuffer();
    proc.waitForProcessOutput(outputStream, System.err);
    println(outputStream.toString());
    

    UPDATE:

    Also you can set working dir by

    File workingDir = file("<path to dir>")
    def proc = "yourCommand".execute([], workingDir.absolutePath);
    
    0 讨论(0)
  • 2021-01-31 16:32

    The simplest way to invoke an external process in Groovy is to use the execute() command on a string. For example, to execute maven from a groovy script run this:

    "cmd /c mvn".execute()
    

    If you want to capture the output of the command and maybe print it out, you can do this:

    print "cmd /c mvn".execute().text
    

    The 'cmd /c' at the start invokes the Windows command shell. Since mvn.bat is a batch script you need this. For Unix you can invoke the system shell.

    0 讨论(0)
  • 2021-01-31 16:37

    For Java 7+ stdio redirection:

    new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
    
    0 讨论(0)
提交回复
热议问题