condition内嵌元素

一、概述

        conditionwaitfor任务可以嵌套一些元素作为条件。条件分核心条件与自定义条件两种,自定义条件由使用者自己编写,核心条件是Ant自带的常用的条件。

二、核心条件

        not:将另一个条件嵌套到这个元素中,从而否定了这个条件的结果。没有任何属性,所有条件内嵌元素都可以作为它的内嵌元素。

        and:没有任何属性,接受任意数量的条件内嵌元素,按照嵌套元素定义的顺序去计算结果,如果所有的条件结果都为true,and就返回true。与java中的“&&”操作语义相同,一旦其中一个结果为false,剩下的条件都不会计算,直接返回false。

        or:没有任何属性,接受任意数量的条件内嵌元素,按照嵌套元素定义的顺序去计算结果,如果其中一个条件结果为true,or就返回true。与java中的“||”操作语义相同,一旦其中一个结果为true,剩下的条件都不会计算,直接返回true。

        xor:没有任何属性,接受任意数量的条件内嵌元素,与java中的“^”操作语义相同,与and和or不同的是xor中所有的内嵌元素都会被计算。当有奇数个条件为true时才会返回true。
        available:与available任务相同,支持其所有的属性和内嵌元素,property和value属性会被忽略。

        uptodate:与uptodate任务相同,支持其所有的属性和内嵌元素,property和value属性会被忽略。

        os:测试当前的操作系统是否与预期的相同,其所有的属性都为true才会返回true。

  •                 family:操作系统家族的名称。支持的值有windows、doc、mac、unix、netware、os/2、tandem、win9x、winnt、z/os、os/400和openvms。
  •                 name:预期操作系统的名称。
  •                 arch:操作系统的体系结构。
  •                 version:期望的操作系统版本。

        equals:判断给定的两个值是否相等。

  •                 arg1:第一个值。
  •                 arg2:第二个值。
  •                 casesensitive:是否大小写敏感,默认为true。
  •                 trim:比较之前是否去空格。默认为false。
  •                 forcestring:从Ant1.8.1起,两个值强制进行字符串比较。默认为false。

        isset:判断指定的属性是否被设置。

        checksum:与checksum任务相同,支持其所有的属性和内嵌元素,property和overwrite属性会被忽略。

        http:判断url指定的web服务器的响应是否有效。默认情况下,400或以上的http响应认为是无效的。

  •                 url:请求页面的完整URL。web服务必须返回errorsBeginAt以下的状态代码。
  •                 errorsBeginAt:响应错误的最低HTTP响应代码,默认为400。
  •                 requestMethod:Ant1.8.0起,发出请求时要使用的HTTP方法。GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE都是有效的,受协议限制。默认为GET。
  •                 followRedirects:Ant1.9.7起,是否应该执行重定向,默认为true。

        socket:检查指定的主机和端口上是否存在TCP/IP监听器。

  •                 server:服务器的DNS名称或IP地址。
  •                 port:要连接的端口。

        filesmatch:判断两个文件是否匹配。如果一个文件不存在会返回false。因为是按字节比较的,所以执行时间取决于字节大小。如果文件大小不同,有一个文件不存在,或者文件名相同这种结果明显的情况,不会进行详细的比较。

  •                 file1:第一个文件。
  •                 file2:第二个文件。
  •                 textfile:从Ant1.7起,比较文件时是否忽略行结束符。默认为false。

        contains:判断字符串是否包含另一个字符串。

  •                 string:被搜索的字符串。
  •                 substring:要搜索的字符串。
  •                 casesensitive:是否大小写敏感,默认为ture。

        istrue/isfalse:判断字符串是否等于ant对true/false的定义。比如“true”、“yes”、“on”都是true。只有一个属性value,为要进行判断的字符串。

        isreference:判断引用是否被定义,还可以判断引用类型。

  •                 refid:引用id。
  •                 type:期望该引用的数据类型或任务的名称。

        issigned:从Ant1.7开始,用来判断jar文件是否有签名。如果设置了name属性,则会检查该文件是否有此签名,否则只检查文件是否包含签名即可。

  •                 file:要进行签名校验的jar文件。
  •                 name:要检查的签名名称。

        isfileselected:从Ant1.6.3起,通过嵌套的选择器判断文件。

  •                 file:要使用嵌入式选择器判断的文件。
  •                 basedir:基于名称的选择器使用的基本目录。如果不设置默认为project的基本目录。

        typefound:从Ant1.7起,判断指定的类型是否定义,并且可以加载它的实现。类型包括tasks, datatypes, scriptdefs, macrodefs and presetdefs。

  •                 name:类型名。
  •                 uri:类型的URI。

        scriptcondition:从Ant1.7开始,根据任何支持 Apache BSF或JSR 223的语言脚本计算条件的值。

  •                 language:脚本语言。
  •                 manager:使用的脚本引擎管理器。默认为auto。
  •                 value:默认值,默认为false。
  •                 src:脚本代码文件名。
  •                 setbeans:从Ant1.8.0起,是否将所有属性、引用和目标作为脚本中的全局变量,默认为true。
  •                 classpath:脚本的类路径。
  •                 classpathref:类路径引用。

        parsersupports:通过尝试设置合适的特性或属性,如SAX/JAXP规范来判断Ant的xml解析器是否支持指定的特性或属性。

  •                 property:属性。
  •                 feature:特性。
  •                 value:当使用property时,必须设置,为字符串。使用feature时为布尔值。

        isreachable:从Ant1.7起,使用java1.5+网络api寻找可达的(远程)系统。

  •                 host:检查的主机.
  •                 url:包含主机名的ur。
  •                 timeout:超时时间,单位秒,默认为30。

        length:从Ant1.6.3起,与length任务类似。用于计算字符串或一到多个文件的长度。

        isfailure:从Ant1.7起,判断一个可执行文件的失败返回码。

        resourcecount:从Ant1.7起,与resourcecount任务类似,用来计算资源集合的大小。

        resourcesmatch:从Ant1.7起,与filesmath类似。astext属性用来设置是否忽略行结束符。如果为true则忽略,默认为false。

        resourcecontains:从Ant1.7.1起,判断资源中是否有指定的字符串。通过引用或者resource属性指定要进行判断的资源。

  •                 resource:一个文件的名称。
  •                 refid:project中定义的资源。
  •                 substring:要查找的字符串。
  •                 casesensitive:是否大小写敏感,默认为true。

        hasmethod:从Ant1.7起,判断class是否含有方法或属性,如果没有找到类或者类加载失败,会构建失败。

  •                 classname:加载的类名称。
  •                 field:要查找的属性。
  •                 method:要查找的方法。
  •                 ignoreSystemClasses:是否忽略系统类,默认为false。
  •                 classpath:类路径。
  •                 classpathref:类路径引用。

        matches:从Ant1.7起,判读指定字符串是否与正则表达式匹配。

  •                 string:要测试的字符串。
  •                 pattern:正则表达式。
  •                 casesensitive:是否大小写敏感,默认为true。
  •                 multiline:是否进行多行匹配,默认为false。
  •                 singleline:是否使用单行模式,此模式会将“.”与行结束符匹配,与java正则中的DOTALL模式对应。默认为false。

        antversion:与antversion任务相同,支持其所有的属性和内嵌元素,property和overwrite属性会被忽略。

        hasfreespace:从Ant1.7起,判断分区是否有足够的空间。属性needed的值可以通过标准的计算术语来指定(K、M、G、T、P)。

  •                 partition:要检查剩余空间的分区或文件系统。
  •                 needed:需要的空间大小。

        islastmodified:从Ant1.8起,判断资源最后秀爱时间。

  •                 millis:指定预期的资源的修改时间的毫秒数。
  •                 datetime:指定预期的资源的修改时间。有一个特殊值“now”代表当前时间。
  •                 pattern:SimpleDateFormat格式,默认为MM/DD/YYYY HH:MM AM(或PM)或MM/DD/YYYY HH:MM:SS AM(或PM)。
  •                 mode:如何比较时间。可选值为:equals、before、not-before、after、not-after。

        resourceexists:从Ant1.8起,判断资源是否存在。

三、简单示例

<project>
	<condition property="isWin7" else="otherOS">
		<equals arg1="${os.name}" arg2="wIndows 7" casesensitive="false"/>
	</condition>
	<echo>OS isWin7:${isWin7}</echo>

	<condition property="containsText" >
		<and>
			<resourceexists>
				<file file="../include/child/include.xml"/>
			</resourceexists>
			<islastmodified dateTime="01/08/2018 04:41:19 AM" mode="not-after">
				<file file="../include/child/include.xml"/>
			</islastmodified>
			<isfileselected file="../include/child/include.xml">
				<contains text="include" casesensitive="false"/>
			</isfileselected>
		</and>
	</condition>
	<echo>containsText include:${containsText}</echo>
	
	<condition property="findType">
		<typefound name="junit" />
	</condition>
	<echo>findType junit:${findType}</echo>
	
	<condition property="scriptValue">
		<scriptcondition language="javascript"
			value="false">
			self.setValue(true);
		</scriptcondition>
	</condition>
	<echo>scriptValue:${scriptValue}</echo>
	
	<condition property="support">
		<and>
		<parsersupports feature="http://xml.org/sax/features/namespaces" />
		<parsersupports
			property="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"
			value="document.xsd"/>
		</and>
	</condition>
	<echo>feature support:${support}</echo>
	
	<condition property="online">
		<isreachable host="localhost" />
	</condition>
	<echo>online:${online}</echo>
	
	<condition property="foo.length">
		<length string=" foo " trim="true" length="3" />
	</condition>
	<echo>foo.length=3:${foo.length}</echo>
	
	<condition property="resourcecmp">
		<resourcesmatch astext="false" >
			<file file="concat.xml" />
			<file file="../concat/build.xml" />
		</resourcesmatch>
	</condition>
	<echo>resourcecmp:${resourcecmp}</echo>
	
	<condition property="hastoString">
		<hasmethod classname="java.lang.Integer" method="toString"/>
	</condition>
	<echo>Integer has method toString:${hastoString}</echo>
	
</project>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值