php файл из командной строки с использованием ant — windows

Я пытаюсь запустить скрипт 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

а также повторил их для фар. Если я открою командное окно, я могу выполнить 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. Какая разница?

Спасибо!

NB: я установил php автономно (без apache) на машине с Windows, использующей в качестве сервера сборки (jenkins). PATH был изменен, чтобы включить php dir.

2

Решение

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

Другие решения

Других решений пока нет …