# Apache Ant

Apache Ant (or simply Ant) is an XML-based build scripting language used heavily by the Open Source community. Ant automates tasks such as compiling source code, building deployment packages and automatically checking dependencies of what items need to be updated in a build set.

## Background

This wikibook was based on a presentation created by Dan McCreary for the Minnesota Java Open Source User Group. Dan felt strongly that a gentle introduction to Ant was necessary for new people to easily learn Ant. The existing Ant documentation, although useful for advanced Ant users, did not meet the needs of most beginners. For example in the Apache documentation, advanced concepts such as token filters were placed directly in the introduction for beginners. The introductory material also did not contain full examples with complete sample build files and expected output. Something else was needed. At the same time the introductory material assumed that the reader was familiar with XML. This material covers some of the material you need to know about XML to build Ant scripts.
This wikibook is also designed to work with other XML-related programming wikibooks such as XML Schema and XForms.

## Book Structure

This document has an introduction page for people just getting started. Mostly hello world information to get a flavor for what Ant is and how it is used. At the end there are six sections:

### Introduction

** Background - History and motivation for Apache Ant
** Adoption - How and why organizations should adopt Apache Ant
** XML Summary - A short review of XML syntax for people that are not familiar with XML. This section can easily be skipped by users that already know about XML file structure.

### Getting Started

** Installation How to download and install Apache Ant
** Testing How to test Apache Ant
** Hello World How to run a small ant program that prints "Hello World!"
* Core Concepts - Core Terms and Concepts useful to Ant developers
** Terminology - Terminology (projects, targets and tasks)
** Build File Structure- The structure of a build file
** Property Using Properties
** Depends Setting up Dependencies
** Fileset Using Fileset

### Best Practices

* Ant Best Practices - Best practices such as how to set up an Ant file
** Standard Targets - A list of standard targets such as init and clean
** Local Property Files - how to use a local property file
** Local File Systems - removing local file system dependencies

### Examples

* Ant Cookbook - A set of small complete working example programs that demonstrate examples of how to use Apache Ant
** Depends - shows how to use the targets depends attribute
** Property - shows how to use an Ant property
** Fileset - shows how to use an Ant fileset

### Ant Tasks that Manipulate XML

XML - how Ant can be used to process XML documents
* XMLwellformed - how to use Apache ant to check an XML file for well formedness
* XMLvalidate - how to use Apache ant to validate an XML file against an XML Schema
* XSLT - how to use Apache ant to run an XML transform
* Running Saxon - how to use Apache ant to run Saxon
* Passing Parameters to XSLT - How to pass parameters to an XSLT transform from Apache Ant
* XQuery - Using XQuery to transform XML documents
* Converting Excel to XML - We use the Apache tika library to convert MS-Excel to XML
* Cleaning up HTML - Use the Apache tika library to clean up HTML
* Converting PDF to XML - We use the Apache tika library to convert PDF to XML

### Ant Tasks that Manipulate eXist

* Store XML data - an ant task that will store collection into eXist
* Reindex a Collection - an ant task that can reindex an eXist collection
* Execute an XQuery - a sample ant task to execute an XQuery
* Creating a .xar file - a sample ant task to create an XML archive file for packing modules or apps

### References

* References - where to get more information on Apache Ant

## See also

* XForms - how to use XForms to create and update XML files to create web form "front-ends" to your Ant scripts
* XQuery - how to use XQuery to generate and update your Ant build files