我正在尝试运行一个ant脚本,它被设置为执行各种php模块。
<target name="phploc" description="Measure project size using PHPLOC">
<exec executable="${basedir}/build/tools/phploc.phar">
<arg value="--count-tests" />
<arg path="${basedir}/src" />
<arg path="${basedir}/tests" />
</exec>
</target>但是,它会失败,并显示错误"%1不是有效的Win32应用程序“
我已经执行了这里描述的注册表调整...http://php.net/manual/en/install.windows.commandline.php
也为phar重复了这些步骤。如果我打开一个命令窗口,我可以通过输入文件名来执行php或phar文件,例如phploc.phar,而不是完整的php.exe phploc.phar,但是它不能通过ant工作。
如果我将ant文件更改为:
<target name="phploc" description="Measure project size using PHPLOC">
<exec executable="php">
<arg line="${basedir}/build/tools/phploc.phar --count-tests" />
<arg path="${basedir}/src" />
<arg path="${basedir}/tests" />
</exec>
</target>一切都很好,因为我猜它会被转换成php.exe /build/tools/phploc.phar (或者类似的东西)。
构建文件来自其他人的项目,我已经通过git克隆了它,所以理想情况下我不想更改它。
所以我想我不明白为什么它是通过命令行工作的(例如,认识到.php .phar是可执行的),而不是通过ant。有什么关系呢?
谢谢!
注:我在一台用作构建服务器(jenkins)的windows机器上安装了php standalone (没有apache)。路径已更改为包含php目录。
发布于 2014-12-03 19:11:11
Windows *.bat文件必须通过cmd运行。将您的示例更改为:
<target name="phploc" description="Measure project size using PHPLOC">
<exec executable="cmd">
<arg value="/c"/>
<arg value="${basedir}/build/tools/phploc"/>
<arg value="--count-tests" />
<arg path="${basedir}/src" />
<arg path="${basedir}/tests" />
</exec>
</target>https://stackoverflow.com/questions/26648197
复制相似问题