我想用Java创建一个实用程序来自动化我们的构建过程。目前的过程涉及
我需要先行,我应该使用哪些库。我可以从Java(独立)打开2个控制台。就像我的程序关闭那些控制台一直在运行。 (控制台是bea server,startWebLogic.cmd)。
答案 0 :(得分:1)
当然,你可以打开任意数量的游戏机。如果您希望同时创建单独的线程,然后使用Runtime.exec()或ProcessBuilder创建进程。
但你为什么要这样做呢?有一个很好的老蚂蚁,是一个专门用于此类任务的构建工具。它支持所有内容,并且可以使用自定义任务进行扩展。
此外,如果您突然想起现在是2011年,请使用Apache Buildr等新工具。
答案 1 :(得分:1)
Alee,是的,你可以用Runtime.getRuntime()执行.exec(“file.bat”);然后你有2个选项,你可以捕获执行的输出
例如:
public static void main(String[] args) {
System.out.println("hello");
try {
Process p = Runtime.getRuntime().exec("./prog.sh");
InputStream in = p.getInputStream();
System.out.println("OUTPUT");
StringBuilder sb = new StringBuilder();
int c;
while( (c = in.read() ) > 0 ) {
sb.append((char) c);
}
//here the script finished
String output = sb.toString();
if( output.contains("Exception")) {
System.out.println("script failed");
}
if( p.exitValue() == 0) {
System.out.println("The script run without errors");
} else {
System.out.println("The script failed");
}
} catch (IOException e) {
e.printStackTrace();
}
}
这将捕获两种情况,您需要捕获输出,然后确定脚本是否成功运行,或者是否可以使用脚本中的退出状态。
exitValue代码为0表示成功,其他任何数字表示失败。
答案 2 :(得分:0)
Java的Runtime
类具有启动Processes的方法,这些方法具有到其输入/输出流和其他管理的编程接口。但是,我不确定Windows如何处理其父母已经死亡的进程。
你也应该考虑通过VB或JScript使用Windows Script Host,因为你可能会有更好的控制。