Ant - 驱动 属性 值的多个条件

Ant - multiple conditions to drive a property value

我正在尝试在 Ant 检查目标中添加多个 AND 条件以设置 属性。我想根据设置的 属性 执行某些操作。

<target name="checkVal">
    <condition property="val.present">
        <and>
            <available file="${srcDir}/somefile"/>
            <matches pattern="MyClass.java" string="${pathString}"/>
        </and>
    </condition>
    <fail message="Failing the condition."/>
</target>

<target name="doSomething" depends="checkVal" if="val.present">
    ...
</target>

如果 属性 val.present<and> 块中的 2 个条件设置,则执行 "doSomething"。一个条件检查文件是否可用,另一个条件检查路径字符串是否包含特定源文件。

我总是收到失败消息。

下面的工作虽然:

<target name="checkVal">
    <available file="${srcDir}/somefile" property="val.present"/>
</target>

<target name="doSomething" depends="checkVal" if="val.present">
    ...
</target>

有人能告诉我如何才能正确吗?

在我用 contains 任务替换 matches 任务后它起作用了。

<target name="checkVal">
    <condition property="val.present">
        <and>
            <available file="${srcDir}/somefile"/>
            <contains substring="MyClass.java" string="${srcDir}"/>
        </and>
    </condition>    
</target>