Apache Ant Less Than

  • 本文关键字:Than Less Ant Apache ant
  • 更新时间 :
  • 英文 :


如何检查一个number属性是否小于Apache Ant?

<property name="small" value="15"/>
<property name="big" value="156"/>
<fail message="small is less than big!">
  <condition>
    <lessthan val1="${small}" val2="${big}"/>
  </condition>
</fail>

从我所看到的(我是新来的蚂蚁)你只能做<equal/> ?

您可以使用<scriptcondition>(参见http://ant.apache.org/manual/Tasks/conditions.html)。

仔细阅读文档,因为它需要在ant中安装额外的jar依赖项。

条件可能如下所示(未测试):

<scriptcondition language="javascript">
    var small = parseInt(project.getProperty("small"));
    var big = parseInt(project.getProperty("big"));
    self.setValue(small < big);
</scriptcondition>

下面是<isgreaterthan>条件任务的用法,没有任何脚本:

<if>
    <isgreaterthan arg1="100" arg2="10"/>
    <then>
        <echo>Number 100 is greater than number 10</echo>
    </then>
</if>

arg1, arg2的值也可以是属性变量

注意:<isgreaterthan>是Ant-Contrib可用的附加条件:

http://ant-contrib.sourceforge.net/tasks/tasks/more_conditions.html

干杯JB Nizet,终于到了。

<!-- Test the Ant Version -->
<property name="burning-boots-web-build.required-ant-version" value="1.8.2"/>
<script language="javascript">
    <![CDATA[
        var current     = project.getProperty("ant.version").match(/([0-9](.)?)+/)[0].replace(/./g,"");
        var required    = project.getProperty("burning-boots-web-build.required-ant-version").match(/([0-9](.)?)+/)[0].replace(/./g,"");
        project.setProperty('ant.valid-version', current < required ? "false" : "true");
    ]]>
</script>
<fail message="This build requires Ant version ${burning-boots-web-build.required-ant-version}.">
    <condition>
        <isfalse value="${ant.valid-version}"/>
    </condition>
</fail>

如果没有自定义任务或嵌入脚本,属性的"小于"比较是不可能的。

但是在大多数情况下,您可以通过将测试应用于值的来源而不是属性来逃避。在构建系统中,这些"源"通常是文件。对于文件,您可以将isfileselected条件与选择器一起使用。大多数选择器接受when属性,如lessmoreequal

isfileselected条件的手册中有一个示例

Ant插件Flaka提供了一个计算EL表达式的失败任务,例如:

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">
 <property name="small" value="15"/>
 <property name="big" value="156"/>
 <fl:fail message="small is less than big!" test="small lt big"/>
</project>
输出:

BUILD FAILED
/home/rosebud/workspace/Ant/demo.xml:7: small is less than big!

参见Flaka手册了解更多详细信息

实际上,@GnanaPrakash提供的答案是不完整的。来自Ant Contrib文档:

这些条件适用于元素。不幸的是,它们不能在任务,尽管任务的所有条件都可以与还有可用于任何可以使用。

因此,islessthanisgreaterthan元素必须像这样包装在bool元素中:

<property name="small" value="15" />
<property name="big" value="156" />
<if>
    <bool>
        <islessthan arg1="${small}" arg2="${big}"/>
    </bool>
    <then>
        <echo message="small is less than big!" />
    </then>
    <else>
        <echo message="big is less than small!" />
    </else>
</if>

如果你不这样做,你会得到一个错误:

if doesn't support the nested "islessthan" element.

相关内容

  • 没有找到相关文章

最新更新