使用ant - windows命令行的php文件

时间:2014-10-30 08:29:17

标签: php ant

我试图运行一个设置为执行各种php模块的ant脚本,例如

<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>

然而,它失败并出现错误&#34;%1不是有效的Win32应用程序&#34;

我已执行了此处所述的注册表调整... 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独立(无apache)。 PATH已更改为包含php目录。

1 个答案:

答案 0 :(得分:1)

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>