【发布时间】:2015-04-27 14:53:46
【问题描述】:
我想从 java 中执行一个 ant 文件。所以我决定使用Runtime.getRuntime().exec() 来实现这一点。我的 java 文件如下所示,
Process p = Runtime.getRuntime().exec("cmd /c start ant mytarget -Darg1="+arg1+" -Darg2="+arg2+" ", null, new File("E:/ant_demo"));
System.out.println("Ant file executed");
...
...
..
System.out.println("Completed");
我的目标是运行 E:/ant_demo 路径中可用的 ant 文件,并使用少量参数。完成ant文件后,应该执行剩余的代码。
当我运行此代码时,会为 ant 打开一个单独的命令提示符窗口,并且在 ant 文件完成之前,其余代码也会并行执行。为了让代码等到蚂蚁完成,我改变了我的代码如下,
Process p = Runtime.getRuntime().exec("cmd /c start /wait ant mytarget -Darg1="+arg1+" -Darg2="+arg2+" ", null, new File("E:/ant_demo"));
p.waitFor();
System.out.println("Ant file executed");
...
...
..
System.out.println("Completed");
在此更改之后,即使在 ant 完成后,剩余的代码也不会被执行,并且用于 ant 的命令提示符保持打开状态。当我手动关闭用于 ant 的命令提示符时,其余代码将被执行。
如何让ant使用的命令提示符自动关闭?或者如何更改我的代码以运行ant文件并在ant完成后执行剩余代码一次?
我尝试通过多种方式实现这一目标,但仍然面临这个问题。
【问题讨论】:
-
您必须调用
cmd窗口吗?没有cmd /c ...就不能执行脚本吗? -
嗨 manouti,我删除了启动选项,但仍然没有执行剩余的代码。
-
@Manouti,它不特定于使用 cmd 窗口运行。除了 cmd winodw 之外,还有其他方法可以使用 java 运行 ant 文件吗?
标签: java batch-file command-line ant processbuilder