Java 如何调用Cmd命令执行程序

1.概述:

  根据业务需要,要求通过在线方式打包java程序,由于服务器是windows系统,想到是思路就是:
  通过git远程下载相关源代码,再通过maven命令工具进行项目打包。这样就要求JavaWeb在服务器运行cmd命令

2.具体代码如下:

/**
*sourcePath 项目文件路径
*/	
public String mvnPackage(String sourcePath) {
  	InputStream error = null;
  	try {
  		StringBuffer command = new StringBuffer();
  		command.append("cmd /c d: ");
  		//这里的&&在多条语句的情况下使用,表示等上一条语句执行成功后在执行下一条命令,
  		//也可以使用&表示执行上一条后台就立刻执行下一条语句
  		command.append(String.format(" && cd %s", sourcePath));
  		command.append(" && mvn -Dmaven.test.skip=true package");
  		Process p = Runtime.getRuntime().exec(command.toString());
  		error = p.getErrorStream();
  		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(error));
  		StringBuffer buffer = new StringBuffer();
  		String s = "";
  		while ((s = bufferedReader.readLine()) != null) {
  			buffer.append(s);
  		}
  		bufferedReader.close();
  		p.waitFor();
  		if (p.exitValue() != 0) {
  			return buffer.toString();
  		} else {
  			return "";
  		}
  	} catch (Exception ex) {
  		if (error != null) {
  			try {
  				error.close();
  			} catch (IOException e) {
  				e.printStackTrace();
  			}
  		}
  		return ex.getMessage();
  	}
  }

3.具体说明:

   p.getErrorStream() :表示获取执行后的错误信息
   p.waitFor() :表示等待执行,直到cmd执行完成后才进行下一步程序的执行操作
   p.exitValue():状态,0表示执行成功,其他表示没有执行成功,有错误

你可能感兴趣的:(Java)