Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant-当目录不存在时跳过任务_Ant_Javac - Fatal编程技术网

Ant-当目录不存在时跳过任务

Ant-当目录不存在时跳过任务,ant,javac,Ant,Javac,我有一组项目,它们使用来自“父”项目的构建文件。在每个项目包含测试目录之前,所有项目都可以正常工作。 现在我有一个新项目,它还没有测试,所以如果测试目录不存在,我不想运行测试任务。(原始脚本失败,srcdir“C:\.jenkins\jobs\Cenne Papiry\workspace\test”不存在!) 我试图仅在测试目录存在时设置test.src属性: <available file="test" property="test.src" value="test"/> ()

我有一组项目,它们使用来自“父”项目的构建文件。在每个项目包含测试目录之前,所有项目都可以正常工作。 现在我有一个新项目,它还没有测试,所以如果测试目录不存在,我不想运行测试任务。(原始脚本失败,
srcdir“C:\.jenkins\jobs\Cenne Papiry\workspace\test”不存在!
) 我试图仅在测试目录存在时设置test.src属性:

<available file="test" property="test.src" value="test"/>


如何实现我的目标?

您的代码是正确的,应该可以在大多数ant版本中使用。下面是一个测试片段,它应该独立运行,在ant 1.7.1和1.9.4中测试:

<project name="bar" default="tests" basedir=".">

    <available file="foo" property="test.src" value="anything"/>

    <target name="tests" if="test.src">
        <echo message="folder or file foo exists"/>
    </target>
</project>


可能重复,我似乎记得,如果和除非目标上希望属性中有一个布尔值(true | false)。@HankLapidez,适用于ANT>=1.8。在此之前,只需检查属性是否已定义。无论哪种方式,“可用”任务仅在文件存在时设置属性。也就是说,上面的代码对我有用。@CiaPan你的链接问,我知道什么(-这很好),我的问题完全不同。这很有效。谢谢,但完整的答案是:1。属性不能定义:我有并且在初始化任务中:-它不工作。2.一项失败的任务也需要条件,所以我不仅需要条件,而且需要条件。如果未定义属性或属性已定义且计算结果为false,则“if”条件的计算结果为false。只要不给它下定义,你就没事了。需要注意的要点:ANT属性是不可更改的。这意味着如果您先设置属性,您将无法再将其设置为其他属性。引用docs的话:“属性是不可变的:无论谁设置了属性,都会在构建的其余部分将其冻结;它们绝对不是变量。”
C:\Users\vackova\workspace\commons-agata\build.xml:246: srcdir attribute must be set!
<project name="bar" default="tests" basedir=".">

    <available file="foo" property="test.src" value="anything"/>

    <target name="tests" if="test.src">
        <echo message="folder or file foo exists"/>
    </target>
</project>