Ant内联执行参数

时间:2016-04-02 17:22:49

标签: ant

我在Ant中运行任务,作为构建事件的CI链的一部分,我是新手。我使用教程来创建用于测试/ linting / etc PHP应用程序的文件。

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>

所有这一切都很好 - 但我想从现在开始使用docker,我希望这只是意味着将<property name="phpunit" value="phpunit"/>更改为<property name="phpunit" value="docker-compose run php phpunit"/>,但这会给我以下错误:< / p>

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

我知道您通常会向目标添加额外的<arg/>个节点,但是根本不可能在初始<property>上提供带有内联参数的完整命令吗?

Ant显然在抱怨,因为与这些内联参数一起,可执行文件不存在。我是否必须使用arg节点并更新每个目标?

单独使用docker-compose工作正常,但我需要args用于正确的容器和工作目录 - 最好是内联,否则我必须插入许多arg节点。

1 个答案:

答案 0 :(得分:1)

最后,我刚刚为phpunit参数创建了一个property,然后使用<args line="${phpunitArgs}">添加了它。

绝对不理想,但至少它做到了它应该做的事情。我当然更喜欢使用Gulp!对于构建系统来说,XML感觉不错。