平时经常会用Ant来写一写脚本,但最近跨入到Groovy的时代,试着做一些改变。Groovy里集成了AntBuilder能非常方便的调用到Ant的对象模型。

现考察如下

1. Groovy里定义的属性如何能在Ant的Task里调用?

 def testMsg = "hello world"
def ant = new AntBuilder()
ant.echo(message:"${testMsg}")

2. 如何在Groovy里访问Ant里定义的属性?

 def ant = new AntBuilder()
ant.property(name:"p1",value:"v1")
ant.echo(message:'${p1}') // output: v1, 注意只是单引号,双引号在Groovy里有点特别
println ant.project.properties.p1 // output: v1

请注意Ant的Property是immutable(不可变的),所以在Groovy里修改一定定义过的Ant属性是不起作用的

 def ant = new AntBuilder()
ant.property(name:"p1",value:"v1")
ant.echo(message:'${p1}') // output: v1, 注意只是单引号,双引号在Groovy里有点特别
ant.project.properties.p1 = "v2" // output: v1
ant.echo(message:'${p1}') // still output: v1

3. 用Groovy创建一个Ant的Property

 def ant = new AntBuilder()
ant.project.setProperty('p1','v1')
ant.echo(message:'${p1}') // outoput: v1

以后可以考虑用Groovy来完成类似Ant所需实现的功能,应该会是十分方便。

[Groovy]Groovy with Ant Task的更多相关文章

  1. Gradle Goodness: Rename Ant Task Names When Importing Ant Build File

    Migrating from Ant to Gradle is very easy with the importBuild method from AntBuilder. We only have ...

  2. [转载][Groovy] Groovy与Java的区别(一)

    原文地址:[Groovy] Groovy与Java的区别(一)作者:langyizhao 因为Groovy可以用Java的所有功能(虽然JVM不同的时候可能会比较麻烦,比如在Android上),所以G ...

  3. JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?

    JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?修改JMeter.properties,将jmeter.save.save ...

  4. ANT task之Junit、JunitReport

    一.ANT任务之Junit: 学习ANT其实主要是学习ANT的task,ANT众多task中有一个Testing Tasks,它下面有两个任务:Junit和JunitReport,主要用来进行单元测试 ...

  5. [Groovy] Groovy API

    http://www.soapui.org/about-soapui/soapui-faq.html#1-SoapUI--General-Questions 3.1.1. What is Groovy ...

  6. Jmeter Ant Task如果报告中有错误,在邮件内容里面直接显示出来 系列2

    由于部门有多个项目,将自动化测试框架运用于多个项目时,希望针对每个项目修改的东西越少越好,为此,做如下修改: D:\apache-jmeter-2.7\extras\jmeter-results-de ...

  7. Jmeter Ant Task如何让beanshell断言失败的详细信息展示在report里面

    首先必须给beanshell断言添加FailureMessage if(${TotalClient_SS}+2!=${TotalClient_SS2}){Failure=true;       Fai ...

  8. Gradle 1.12用户指南翻译——第二十四章. Groovy 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  9. Groovy安装配置

    一.介绍 Groovy是可以运行在 Java 平台上进行动态语言,使用方式基本与使用 Java 的方式相同,Groovy和java基本是可以实现无缝整合,它有以下一些特性: 是一个基于Java虚拟机的 ...

随机推荐

  1. App启动原理和启动过程

        一.程序启动原理 1.1.main函数中执行了一个UIApplicationMain这个函数UIApplicationMain(int argc, char *argv[], NSString ...

  2. DAY10-MYSQL库操作

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...

  3. WPF TextBox 一些设置技巧

    WPF TextBox 一些设置技巧 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-01 参考: 章节: 取消输入法 输入方式设定为Over ...

  4. PHP数组函数的使用

    1.array_walk($arr, $func, [$data])  使用用户自定义的函数遍历所有的元素,返回true/false $func是一个函数名 默认会传入两个参数 第一个 $arr的值, ...

  5. C++ 私有构造函数的作用

    很多情况下要求当前的程序中只有一个object.例如一个程序只有一个和数据库的连接,只有一个鼠标的object.通常我们都将构造函数的声明置于public区段,假如我们将 其放入private区段中会 ...

  6. JavaScript的self和this使用小结

    一.self这个非常简单.我们知道,打开任何一个网页,浏览器会首先创建一个窗口,这个窗口就是一个window对象,也是js运行所依附的全局环境对象和全局作用域对象.self 指窗口本身,它返回的对象跟 ...

  7. Cocos2d-x 网络编程

    主要介绍内容:Http协议,Socket协议,webSocket协议, Cocos2d-x中的相关类和方法 1 Http协议 HTTP协议也叫超文本传输协议.是互联网广泛使用的通信协议,常用于B/S架 ...

  8. 【摘自张宴的"实战:Nginx"】Nginx的server指令

    server 语法:server name[parameters] 默认值:none 使用环境:upstream 该指令用于指定后端服务器的名称和参数.服务器的名称可以是一个域名.一个IP地址.端口号 ...

  9. Luogu 4206 [NOI2005]聪聪与可可

    BZOJ 1415 简单期望 + 记忆化搜索. 发现聪聪每一步走向的地方是在可可的所在位置确定时是确定的,设$nxt_{x, y}$表示聪聪在$x$,可可在$y$时聪聪下一步会走到哪里,我们先预处理出 ...

  10. niginx隐藏入口文件index.php

    location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$ last; break; } }