我需要在Runtime.getRuntime()。exec()中运行两行,这两行:
cd %CMS_HOME%
ant deploy
现在可以制作一个.bat
文件,但我认为它对两行无用,
是更容易!有人有什么想法吗?
答案 0 :(得分:3)
调用任务programmatically from Java:
File buildFile = new File("build.xml");
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget(p.getDefaultTarget());
答案 1 :(得分:2)
将其放入.bat
文件中。这不是无用的;这就是Runtime.exec的工作原理。
您应该考虑使用ProcessBuilder类而不是Runtime.exec()
。它是作为Runtime.exec()
的继承者在JDK 5中引入的。
答案 2 :(得分:2)
您可以使用Runtime.exec(String command, String[] envp, File dir)
在ant deploy
文件夹中执行dir
。
P.S。使用来自另一个java程序的批处理文件执行ant,这是一个java程序,这有点奇怪。你可以像java类一样运行它......
答案 3 :(得分:2)
当您运行外部应用程序时,您必须根据目标操作系统的规则行事。
在您的情况下,您希望在Windows上运行2个命令,因此您必须说:
cd TheDir && ant
首先在命令行中尝试。然后使其工作从java:
运行带有前缀cmd
的命令
cmd /c cd TheDir && ant
或者您可以使用纯Java解决方案。使用ProcessBuilder
代替Runtime.exec()
。 ProcessBuilder允许您设置工作目录,因此您可以直接运行ant
。
最后一点。实际上你根本不需要运行外部进程。 Ant是java应用程序。您可以直接从您的应用程序运行其main()
方法并指定所有需要的参数。