如何检查文件是否存在,如果没有杀死构建?

时间:2009-10-28 15:53:48

标签: ant

如何停止构建,并在文件不存在时通知用户?我知道如果文件存在,我可以使用可用的任务来设置属性,但我不确定如何停止构建并回显一些东西。

如果可能的话,我想坚持核心任务。

5 个答案:

答案 0 :(得分:18)

您可以使用fail task来解决所有失败的需求。该页面上的最后一个示例实际上就是您需要的内容

<fail message="Files are missing.">
    <condition>
        <not>
            <resourcecount count="2">
                <fileset id="fs" dir="." includes="one.txt,two.txt"/>
            </resourcecount>
        </not>
    </condition>
</fail>

答案 1 :(得分:15)

有点简单(我希望它可以变得更简单)

<fail message="file ${myfile} not set or missing">
    <condition>
        <not>
            <available file="${myfile}" />
        </not>
    </condition>
</fail>

答案 2 :(得分:6)

设置您的属性并使用Fail任务和if属性。

答案 3 :(得分:3)

这可以更紧凑地完成(如Jason Punyon所示)。具体来说,假设您想要的文件位于属性file中,请执行:

<available file="${file}" property="file.exists" />
<fail message="File missing: ${file}" unless="file.exists" />

答案 4 :(得分:0)

这种检查很常见,因此使用宏可能会有所回报。 这是一个基于leonbloy解决方案的宏:

<macrodef name="require">
    <attribute name="file"/>
    <attribute name="message" default="file @{file} not set or missing"/>
    <sequential>
        <fail message="@{message}">
            <condition>
            <not>
                <available file="@{file}" />
            </not>
            </condition>
        </fail>
    </sequential>
</macrodef>

像这样使用:

<require file="${myfile}" />

<require file="${myfile}" message="my custom message" />