Ant内置任务之scriptdef

一、概述

        scriptdef是Ant内置任务,用于使用脚本语言定义ant任务,BSF或JSR223支持的脚本语言可以用来定义脚本。任务支持的属性和嵌套元素可以通过嵌套attribute和element定义。在脚本中可以通过两个集合变量attributes和elements来访问属性和嵌套元素。attributes中的元素可以通过属性名访问。elements中的元素可以通过元素名访问。ant将所有属性名和元素名都转换成小写。ant1.6.3起,self做为预定义的脚本定义任务实例的引用。self.txt包含传递给脚本的任何嵌套文本。如果没有定义attribute或element,attributes.get()或elements.get()将返回null。self.fail(String message)用于抛出BuildException。project做为预定义的Ant的project的引用。

二、属性

        name:使用脚本创建的任务名称。
        language:编写脚本的编程语言,
        manager:使用的脚本引擎管理器。可选值有:bsf(BSF脚本管理器)、javax(jdk1.6+支持的JSR223脚本管理器)、auto(如果bsf存在使用bsf,否则使用javax),默认为auto。
        src:如果脚本不是嵌套在标签中,设置脚本文件的位置。
        uri:存放定义的xml命名空间uri。
        classpath:传递到脚本的类路径。
        classpathref:使用的类路径引用。
        loaderRef:在指定类路径下加载脚本的加载器名称。允许多个脚本定义使用相同的类加载器。

        嵌套元素:
        attribute:定义任务的属性,具有以下属性:
                name:属性名。
        element:定义任务的嵌套元素,具有以下属性:
                name:脚本定义的任务支持的嵌套元素名。
                classname:嵌套元素使用的类名称,直接指定类是Ant指定类型名称的另一种方式。
                type:在创建该元素时要使用的Ant任务或类型的名称,是直接指定类型名称的另一种方式。如果类型位于命名空间中,那么URI和:必须作为类型的前缀。例如:type="antlib:example.org:newtype"。
                ant1.7起,可以使用任意资源作为element的嵌套元素来加载脚本。
        classpath:使用的类路径。

三、简单示例

<project>
	<scriptdef name="square" language="javascript">
		<attribute name="num"/>
		<attribute name="property"/>
		<element name="property" type="property"/>
		<![CDATA[
			num=attributes.get("num");
			property=attributes.get("property");
			element=elements.get("property");
			result=num*num;
			if(property!=null){
				project.setNewProperty(property,result);
			}
			if(element!=null){
				for(i=0;i<element.size();i++){
					project.setNewProperty(element.get(i).getName(),result);
				}
			}else{
				self.log(result);
			}
			//self.log("number is "+num+",square is "+result);
		]]>
	</scriptdef>
	<square num="10" property="result">
		<property name="a"/>
		<property name="b" value="xx"/>
	</square>
	<echo message="${result},${a},${b}"/>
</project>


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值