anchor.diff:  [[sec:using_ant_tasks_tutorial]]
   == Using Ant Tasks
   
  -Ant tasks are first-class citizens in Gradle. Gradle provides excellent integration for Ant tasks by simply relying on Groovy. Groovy is shipped with the fantastic `AntBuilder`. Using Ant tasks from Gradle is as convenient and more powerful than using Ant tasks from a `build.xml` file. From the example below, you can learn how to execute Ant tasks and how to access Ant properties:
  +Ant tasks are first-class citizens in Gradle. Gradle provides excellent integration for Ant tasks by simply relying on Groovy. Groovy is shipped with the fantastic `AntBuilder`. Using Ant tasks from Gradle is as convenient and more powerful than using Ant tasks from a `build.xml` file. And it is usable from Kotlin too. From the example below, you can learn how to execute Ant tasks and how to access Ant properties:
   
   .Using AntBuilder to execute ant.loadfile target
   ====
  
positive.code: 
  The calls `doFirst` and `doLast` can be executed multiple times. They add an action to the beginning or the end of the task's actions list. When the task executes, the actions in the action list are executed in order.
  
  // TODO QUID? This is Groovy specific
  [[sec:shortcut_notations]]
  == Shortcut notations
  
  There is a convenient notation for accessing an _existing_ task. Each task is available as a property of the build script:
  
  
negative.code: [[sec:build_script_external_dependencies]]
  == External dependencies for the build script
  
  If your build script needs to use external libraries, you can add them to the script's classpath in the build script itself. You do this using the `buildscript()` method, passing in a block which declares the build script classpath.
  
  .Declaring external dependencies for the build script
  ====
  