如何检查数字属性是否小于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>
从我所看到的(我是Ant新手)你只能做<equal/>
?
答案 0 :(得分:4)
您可以使用<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>
答案 1 :(得分:3)
以下是<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
答案 2 :(得分:2)
干杯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>
答案 3 :(得分:0)
如果没有自定义任务或嵌入式脚本,则无法使用属性的“小于”比较。
但在大多数情况下,您可以通过将测试应用于属性而不是值的来源来逃避。在构建系统中,这些“源”通常是文件。在文件上,您可以使用isfileselected
condition和selector。大多数选择者接受when
,less
或more
等equal
属性。
isfileselected
条件的手册显示了一个示例。
答案 4 :(得分:0)
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 manual
答案 5 :(得分:0)
实际上,@ GnanaPrakash提供的答案是不完整的。 来自Ant Contrib文档:
这些条件适合在元素中使用。不幸的是,它们不能用于&lt; condition&gt;任务,尽管该任务的所有条件都可以与&lt; bool&gt;一起使用和&lt; bool&gt;可用于&lt; condition&gt;的任何地方可以使用。
因此,islessthan
或其他isgreaterthan
元素必须包装在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.