2016-04-02 22 views
0

ビルドイベントのCIチェーンの一環として、私はかなり新しいAntのタスクを実行しています。私はPHPアプリケーションをテスト/ linting/etcのためのファイルを作成するチュートリアルを使用しました。Antインラインexec引数

のbuild.xmlにおける最初の重要なディレクティブは、次のとおり

<property name="phpmd" value="phpmd"/> 
<property name="phpunit" value="phpunit"/> 

あり、これは正常に動作し、そのphpmd/PHPUnitのを想定経路上にあり、そしてさらなる例としてはPHPUnitを使用は、下で実行されます次のターゲット:

<target name="phpunit" unless="phpunit.done" depends="prepare" description="Run unit tests with PHPUnit"> 
    <exec executable="${phpunit}" resultproperty="result.phpunit" taskname="phpunit"> 
     <arg value="--configuration"/> 
     <arg path="${basedir}/phpunit.xml"/> 
    </exec> 
    <property name="phpunit.done" value="true"/> 
</target> 

はすべて、これはIS-としてうまく動作しますが、私は単に<property name="phpunit" value="docker-compose run php phpunit"/>から<property name="phpunit" value="phpunit"/>を、変更を意味します今、私が望んでいたから、ドッキングウィンドウを使用したいが、これは代わりに、私に次のエラーを与える:

Execute failed: java.io.IOException: Cannot run program "docker-compose run -w /var/www/src php phpunit" (in directory "/var/lib/jenkins/jobs/Blah blah blah/workspace/src"): error=2, No such file or directory

私はあなたが通常targets-するために追加の<arg/>ノードを追加することになりますが、それは最初の<property>のインライン引数を指定して、完全なコマンドを提供するために、全く不可能であることを知っていますか?

これらのインライン引数とともに、実行ファイルが存在しないため、Antは明らかに不平を言っています。 argノードを使用してすべての単一のターゲットを更新する必要がありますか?


のみdocker-composeを使用すると、正常に動作しますが、私はそうでない場合、私は多くの引数ノードを挿入する必要があり、好ましくはインラインused-することが正しいの容器や作業ディレクトリのための引数を必要としています。

答えて

1

最後に、phpunit引数のためにpropertyを作成してから、<args line="${phpunitArgs}">を使用して追加しました。

少なくとも理想的ではありませんが、少なくともそれは想定されていることを実行します。私は確かにGulpの使用を好む! XMLはビルドシステムに悪い選択のように感じます。

関連する問題