<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html>
<head>
    <script type="text/javascript">var xookiConfig = {level: 0};</script>   
    <script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
    <textarea id="xooki-source">
<h1>Documentation</h1>
Welcome to the official EasyAnt documentation.

<h2>What is EasyAnt</h2>

Easyant is a toolbox focusing on easing project build processes.
It's based on <a href="http://ant.apache.org">Apache Ant</a> and <a href="http://ant.apache.org/ivy/">Apache Ivy</a>, and allows for maximum flexibily, improved integration in existing build systems and provides conventions and guidelines.

Our goals are :
<ul>
    <li>to leverage popularity and flexibility of Ant.</li>
    <li>to integrate Apache Ivy, such that the build system combines a ready-to-use dependency manager.</li>
    <li>to simplify standard build types, such as building web applications, JARs etc, by providing ready to use builds.</li>
    <li>to provide conventions and guidelines.</li>
    <li>to make plugging-in of fresh functionalities as easy as writing Ant scripts.</li>
</ul>

To still remain adaptable, 
<ul>
    <li>Though EasyAnt comes with a lot of conventions, we never lock you in.</li>
    <li>EasyAnt allows you to easily extend existing modules or create and use your own modules.</li>
    <li>EasyAnt makes migration from Ant very simple. Your legacy Ant scripts could still be leveraged using EasyAnt.</li>
</ul>

<h2>About this doc</h2>

If you are browsing this documentation from your installation of EasyAnt, you can also check the <a href="http://ant.apache.org/easyant/">online version</a> for latest updates.

You can also browse this documentation offline either by downloading the documentation distribution, or by checking out the src/documentation directory from svn. This documentation uses xooki as documentation engine, so you can very easily edit it and submit patches when you browse it from source.</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>
