通过批处理文件运行Ant:后续命令无法运行

27

我有一个批处理文件,它运行ant然后复制其中生成的一个文件:

ant -Dproject.version=1.1.2 release published
copy /Y D:\dir1\MyJar.jar   D:\dir2\MyJar.jar
当我运行批处理文件时,ant成功运行,但复制语句从未执行,尽管在ant任务完成后手动输入该语句并按Enter键可以正常工作。这是怎么回事?

“从未发生” - 没有任何消息?也许运行目录与您尝试手动运行它的目录不同? - khachik
2个回答

47

我曾经遇到过同样的问题,神奇的 call 命令解决了它。

在您的批处理文件中尝试如下:

call ant -Dproject.version=1.1.2 release published
copy /Y D:\dir1\MyJar.jar   D:\dir2\MyJar.jar

无法告诉你为什么它有效,我猜这是微软的逻辑。


17
这是因为ant是批处理文件。如果您从另一个批处理中调用一个批处理,则需要使用call命令。但是,是的,这有时并不是很清楚。 - Joey
只要不将ant的输出重定向到文件中,它就能正常工作:调用ant目标 >> log.log。但是一旦重定向输出,它就无法继续执行。 - User

11

当您从另一个批处理文件中调用一个批处理文件时(这通常不太清楚),您应该使用 CALL (或 call ),否则它会更像 goto ,并且不会返回给调用者。 ant 实际上是批处理文件 ant.bat 吗? 那么这应该可以工作:

CALL ant -Dproject.version=1.1.2 release published

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接