16.1.使用 Ant 任务和 Ant 类型的构建

在构建脚本中, Ant 属性是由 Gradle提供的. 这是一个用于参考的 AntBuilder 实例. AntBuilder 用于从构建脚本访问 Ant 任务, 类型和属性. 下面的例子解释了从 Ant 的 build.xml 格式到 Grooy 的映射.

你可以通过调用 AntBuilder 实例的方法执行 Ant 任务. 你可以使用任务名称作为方法名, 比如, 可以通过调用 anto.echo() 任务执行 Ant echo 任务. Ant 任务属性通过 Map 参数传递给方法. 下面是一个 echo 任务的例子, 注意我们也可以混合使用 Groovy 代码和 Ant 任务标记, 这点个功能非常强大.

例 16.1.使用 Ant 任务

build.gradle

  1. task hello << {
  2. String greeting = 'hello from Ant'
  3. ant.echo(message: greeting)
  4. }

gradle hello 的输出

  1. >\> gradle hello
  2. >:hello
  3. >[ant:echo] hello from Ant
  4. >
  5. >BUILD SUCCESSFUL
  6. >
  7. >Total time: 1 secs

你可以添加嵌套元素添加到一个封闭的 Ant 任务的内部. 定义嵌套元素跟定义任务的方式相同, 通过与调用我们要定义的元素名相同的方法.

例 16.3.添加嵌套元素到一个Ant任务

build.gradle

  1. task zip << {
  2. ant.zip(destfile: 'archive.zip') {
  3. fileset(dir: 'src') {
  4. include(name: '**.xml')
  5. exclude(name: '**.java')
  6. }
  7. }
  8. }

你可以像访问任务一样访问 Ant type,只需要将 type 名作为方法名即可. 该方法调用返回的 Ant 数据类型,可以直接在构建脚本中使用.下面的例子中,我们创建了一个ant path对象,然后遍历他的内容.

例 16.4.使用 Ant 类型

build.gradle

  1. task list << {
  2. def path = ant.path {
  3. fileset(dir: 'libs', includes: '*.jar')
  4. }
  5. path.list().each {
  6. println it
  7. }
  8. }

更多关于 AntBuilder 的信息可以参考 ‘Groovy in Action’8.4 或者Groovy Wiki.