2014-10-30 68 views
2

我想運行一個螞蟻腳本,它被設置爲執行各種php模塊,例如從命令行使用螞蟻的PHP文件 - windows

<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,但它不通過螞蟻工作。

如果我改變螞蟻文件:

<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是可執行的),但不通過螞蟻。有什麼不同?

謝謝!

注意:我在一臺正在使用作爲構建服務器(jenkins)的windows計算機上安裝了php獨立版(無apache)。 PATH已更改爲包含php dir。

回答

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>