检查ant属性标记/元素的“value”属性的“值”

时间:2012-09-06 11:44:51

标签: xml ant build build-automation xmltask

我想检查属性值是否具有应该从ant

中的另一个文件读取的值

任何身体都可以,不需要额外的罐子。

<property name="a" value="${input.password}" />

想检查input.password是否从xyz.properties文件获取了值

非常感谢 悬臂

P.S:实际上我必须检查此行密码= mypassword是否存在于.properties文件中,是否存在于ant脚本中。另一种方式是受欢迎的!

编辑:我正在使用其中一个引用的解决方案,但没有成功:

<property file="..\..\xyz\application.properties" prefix="input" /> 

<property name="foo" value="${input.password}"/>
 <fail message="Property &quot;foo&quot; has no value">
     <condition>
          <not>
             <equals arg1="${foo}" arg2=""/>
          </not>
     </condition>
</fail>

始终收到此消息:“Property”foo“没有值”,无论该行是否存在:password = de in application properties。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用<fail message="db.schema is not defined!" unless="db.schema"/>块,例如,如果未定义db.schema,则会失败。您可能会发现一些this并且很有用,这是您正在寻找的吗?

同时检查this。哦,好吧,我明白你的意思,请试试这个(我正在使用Ant 1.8.2): 这是build.xml:

<project name="Bla" default="build" basedir=".">
<target name="build">
    <property file="bla.properties"/>

<fail>
     <condition>
       <not>
        <equals arg1="${foo}" arg2="bodo"/>
       </not>
     </condition>
</fail>
</target>
</project>

文件bla.properties包含foo=boo,如果我将bodo更改为boo,它目前失败,则成功。

答案 1 :(得分:1)

<project name="demo" default="dosomething">

    <loadproperties srcFile="check.properties"/>

    <target name="check">
        <input message="Enter value" addproperty="input"/>

        <condition property="input.matches">
            <equals arg1="${input}" arg2="${valuefromfile}"/>
        </condition>
    </target>

    <target name="dosomething" depends="check" if="input.matches">
        <echo message="hello world"/>
    </target>

</project>