平时经常会用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. SpringMVC + AJAX 实现多文件异步上传

    转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇 ...

  2. tar命令解压jdk.tar.gz包 报错 gzip: stdin: not in gzip format

    转自:https://blog.csdn.net/LL_zhuo/article/details/44173355 遇到和这篇博文一样的问题了.用wget 从oracle官网下载jdk, http:/ ...

  3. DAY14-前端之Bootstrap框架

    Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局,并且 ...

  4. NoSQL概述

  5. 由浅入深漫谈margin属性

    margin 在中文中我们翻译成外边距或者外补白(本文中引用外边距).他是元素盒模型(box model)的基础属性. 一.margin的基本特性 margin 属性包括 margin-top, ma ...

  6. RxAndroid基本使用1

    1,基本使用 public class MainActivity extends ActionBarActivity implements View.OnClickListener, View.OnT ...

  7. koa1链接mongodb

    1.项目下安装mongodb和mongoose npm install mongodb --save-dev npm install mongoose --save-dev 2.router中 var ...

  8. 算法Sedgewick第四版-第1章基础-008一用数组实现栈(泛型、可变大小)

    package algorithms.ADT; /*************************************************************************** ...

  9. Linux expect命令

    一.简介 通过Shell可以实现简单的控制流功能,但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能.而就使用来实现这种功能的工具.Ex ...

  10. 线程池的原理以及实现线程池的类ExecutorService中方法的使用

    1.线程池:线程池就是就像一个容器,而这个容器就是用来存放线程的,且有固定的容量. 如果没有线程池,当需要一个线程来执行任务时就需要创建一个线程,我们设创建线程的时间为t1,执行线程的时间为t2,销毁 ...