You are viewing a plain text version of this content. The canonical link for it is here.
Posted to easyant-commits@incubator.apache.org by hi...@apache.org on 2011/03/14 14:29:02 UTC

svn commit: r1081393 [4/11] - in /incubator/easyant/site/staging: ./ history/ history/trunk/ history/trunk/changelog/ history/trunk/howto/ history/trunk/ref/ history/trunk/ref/anttasks/ history/trunk/ref/anttasks/findclasspath/ history/trunk/ref/buildt...

Added: incubator/easyant/site/staging/history/trunk/howto/skeleton.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/howto/skeleton.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/howto/skeleton.html (added)
+++ incubator/easyant/site/staging/history/trunk/howto/skeleton.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,178 @@
+<!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>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 1};</script>   
+    
+
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <title>Working with skeletons of project</title>
+  <meta name="keywords" content="" />
+  <meta name="description" content="" />
+  <link rel="stylesheet" type="text/css" href="../../../style/style.css" media="screen"/>
+  <!-- for tree, see if it would better go in xooki.js -->
+  <link rel="stylesheet" type="text/css" href="../../../style/tree.css" />
+  <script src="../../../js/jquery.pack.js" type="text/javascript"></script>
+  <script src="../../../js/jquery.treeview.js" type="text/javascript"></script>
+  <script type="text/javascript">
+  $(document).ready(function(){$("#treemenu").Treeview({speed: "fast",store: true});});
+  </script>
+
+<script language="javascript" type="text/javascript">xooki = {u: function(url) {return "../../../xooki/"+url;}};</script>
+</head>
+<body>
+<div id="header">
+    <div id="incubatorlogo">
+	<img src="../../../images/apache-incubator-logo.png"/>
+    </div>    
+    <div id="topmenu">
+        <ul>
+            <li><a href="../../../index.html" id="topmenu1" accesskey="1" title="">Home</a></li>
+            <li><a href="../../../contact.html" id="topmenu2" accesskey="2" title="">Get involved</a></li>
+        </ul>
+    </div>
+</div>
+<!-- end #header -->
+<div id="menu">
+    <ul>
+        <li class="first"><a href="../../../index.html" accesskey="1" title="">Home</a></li>
+        <li><a href="../../../download.html" accesskey="1" title="">Download</a></li>
+        <li><a href="http://www.apache.org/licenses/" title="">License</a></li>
+        <li><a href="../../../history/trunk/tutorials.html" title="">Tutorials</a></li>
+        <li><a href="../../../history/trunk/reference.html" title="">References</a></li>
+    </ul>
+</div>
+<!-- end #menu -->
+<div id="content">
+    <div id="sidebar" class="boxed">
+        <h2 class="title">Apache EasyAnt&#153;</h2>
+        <div id="links">
+                <ul id="treemenu" class="treeview"><li id="xooki-index" class="submenu"><a href="../../../index.html" >Home</a><ul class="closed"><li id="xooki-features"><a href="../../../features.html" >Features</a></li><li id="xooki-license"><a href="http://www.apache.org/licenses/" >License</a></li><li id="xooki-faq"><a href="../../../faq.html" >FAQ</a></li></ul></li><li id="xooki-download"><a href="../../../download.html" >Download</a></li><li id="xooki-history" class="submenu">History<ul class="open"><li id="xooki-history/trunk/index" class="submenu"><a href="../../../history/trunk/index.html" >Trunk</a><ul class="open"><li id="xooki-history/trunk/tutorials" class="submenu"><a href="../../../history/trunk/tutorials.html" >Tutorials</a><ul class="open"><li id="xooki-history/trunk/howto/GettingStarted"><a href="../../../history/trunk/howto/GettingStarted.html" >Getting Started</a></li><li id="xooki-history/trunk/howto/SettingupasimpleEasyAntproject"><a href="../../../hist
 ory/trunk/howto/SettingupasimpleEasyAntproject.html" >Setting up a simple EasyAnt Project</a></li><li id="xooki-history/trunk/howto/writePlugins"><a href="../../../history/trunk/howto/writePlugins.html" >Writing plugins</a></li><li id="xooki-history/trunk/howto/skeleton"><a href="../../../history/trunk/howto/skeleton.html" class="current">Working with skeletons of project</a></li><li id="xooki-history/trunk/howto/multimodules"><a href="../../../history/trunk/howto/multimodules.html" >Working with multi-modules</a></li><li id="xooki-history/trunk/howto/BuildConfigurations"><a href="../../../history/trunk/howto/BuildConfigurations.html" >Build configurations</a></li></ul></li><li id="xooki-history/trunk/reference" class="submenu"><a href="../../../history/trunk/reference.html" >Reference</a><ul class="closed"><li id="xooki-history/trunk/ref/features"><a href="../../../history/trunk/ref/features.html" >Features</a></li><li id="xooki-history/trunk/ref/Defaultlifecycle"><a href="
 ../../../history/trunk/ref/Defaultlifecycle.html" >Default lifecycle</a></li><li id="xooki-history/trunk/ref/Directorystructure"><a href="../../../history/trunk/ref/Directorystructure.html" >Directory structure</a></li><li id="xooki-history/trunk/ref/Modulefiles"><a href="../../../history/trunk/ref/Modulefiles.html" >Module files</a></li><li id="xooki-history/trunk/ref/ProjectMancommand"><a href="../../../history/trunk/ref/ProjectMancommand.html" >ProjectMan commands</a></li><li id="xooki-history/trunk/ref/phases"><a href="../../../history/trunk/ref/phases.html" >Understanding phases</a></li><li id="xooki-history/trunk/ref/anttasks" class="submenu"><a href="../../../history/trunk/ref/anttasks.html" >Ant Tasks</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/BindTarget"><a href="../../../history/trunk/ref/anttasks/BindTarget.html" >bindtarget</a></li><li id="xooki-history/trunk/ref/anttasks/checkresolver"><a href="../../../history/trunk/ref/anttasks/checkresolve
 r.html" >checkresolver</a></li><li id="xooki-history/trunk/ref/anttasks/CoreVersiontask"><a href="../../../history/trunk/ref/anttasks/CoreVersiontask.html" >core-version</a></li><li id="xooki-history/trunk/ref/anttasks/easyant"><a href="../../../history/trunk/ref/anttasks/easyant.html" >easyant</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath" class="submenu"><a href="../../../history/trunk/ref/anttasks/findclasspath.html" >findclasspath</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy"><a href="../../../history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy.html" >basic-configuration-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/environment-strategy"><a href="../../../history/trunk/ref/anttasks/findclasspath/environment-strategy.html" >environment-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/project-dependency-strategy"><a href="../../..
 /history/trunk/ref/anttasks/findclasspath/project-dependency-strategy.html" >project-dependency-strategy</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/Importtask" class="submenu"><a href="../../../history/trunk/ref/anttasks/Importtask.html" >import</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/plugintask"><a href="../../../history/trunk/ref/anttasks/plugintask.html" >plugin task</a></li><li id="xooki-history/trunk/ref/anttasks/buildtypetask"><a href="../../../history/trunk/ref/anttasks/buildtypetask.html" >buildtype task</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/menugenerator"><a href="../../../history/trunk/ref/anttasks/menugenerator.html" >menugenerator</a></li><li id="xooki-history/trunk/ref/anttasks/LoadModuletask"><a href="../../../history/trunk/ref/anttasks/LoadModuletask.html" >loadmodule</a></li><li id="xooki-history/trunk/ref/anttasks/Parametertask"><a href="../../../history/trunk/ref/anttasks/Parametertask.html" >param
 eter</a></li><li id="xooki-history/trunk/ref/anttasks/Pathtask"><a href="../../../history/trunk/ref/anttasks/Pathtask.html" >path</a></li><li id="xooki-history/trunk/ref/anttasks/Property"><a href="../../../history/trunk/ref/anttasks/Property.html" >property</a></li><li id="xooki-history/trunk/ref/anttasks/registerartifact"><a href="../../../history/trunk/ref/anttasks/registerartifact.html" >registerartifact</a></li><li id="xooki-history/trunk/ref/anttasks/SubModuletask"><a href="../../../history/trunk/ref/anttasks/SubModuletask.html" >submodule</a></li></ul></li><li id="xooki-history/trunk/ref/buildtypes/buildtypes"><a href="../../../history/trunk/ref/buildtypes/buildtypes.html" >Build Types</a></li><li id="xooki-history/trunk/ref/plugins/plugins"><a href="../../../history/trunk/ref/plugins/plugins.html" >Plugins</a></li><li id="xooki-history/trunk/ref/EasyAntconfigurationfile"><a href="../../../history/trunk/ref/EasyAntconfigurationfile.html" >EasyAnt configuration file</a
 ></li><li id="xooki-history/trunk/ref/ProjectIvyInstance"><a href="../../../history/trunk/ref/ProjectIvyInstance.html" >Project Ivy Instance</a></li></ul></li><li id="xooki-history/trunk/changelog" class="submenu"><a href="../../../history/trunk/changelog.html" >Changelog</a><ul class="closed"><li id="xooki-history/trunk/changelog/0.7"><a href="../../../history/trunk/changelog/0.7.html" >0.7</a></li></ul></li><li id="xooki-history/trunk/faq"><a href="../../../history/trunk/faq.html" >FAQ</a></li><li id="xooki-history/trunk/contact"><a href="../../../history/trunk/contact.html" >Contact</a></li></ul></li></ul></li><li id="xooki-contact" class="submenu"><a href="../../../contact.html" >Get Involved</a><ul class="closed"><li id="xooki-Mailinglist"><a href="../../../Mailinglist.html" >Mailing list</a></li><li id="xooki-Issuetracking"><a href="../../../Issuetracking.html" >Issue tracking</a></li><li id="xooki-Sourcerepository"><a href="../../../Sourcerepository.html" >Source repo
 sitory</a></li><li id="xooki-irc"><a href="../../../irc.html" >IRC</a></li></ul></li><li id="xooki-Team"><a href="../../../Team.html" >Team</a></li><li id="xooki-foundation" class="submenu"><a href="../../../foundation.html" >Foundation</a><ul class="closed"><li id="xooki-undefined"><a href="http://www.apache.org" >ASF</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/sponsorship.html" >Sponsorship</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/thanks.html" >Thanks</a></li></ul></li></ul>
+        </div>
+    </div>
+
+    <div id="posts">
+        <br class="xooki-br"/><h1>Working with skeletons of project</h1>
+<p>EasyAnt comes with a module named skeleton that allows you to create or install project skeletons. This could be pretty useful to quickstart a project.</p>
+<p>By default, this module works in interactive mode, which means that easyant will ask you questions for every required property. But you can still give parameters on the command line using -Dproperty.<br class="xooki-br"/>Interactive mode can be disabled by setting skeleton.interactive.mode=false.</p>
+
+<h2>How to create a new project using a project skeleton ?</h2>
+<h3>Selecting from a list of all available skeletons</h3>
+Since easyant 0.8 skeleton plugin provides a target allowing to chose a skeleton from a list. This target is named ":select"<br class="xooki-br"/>Example:
+<pre>&gt; easyant skeleton:select</pre>
+<pre>
+skeleton-select:<br class="xooki-br"/>  [echo] Choose a skeleton in the following list:<br class="xooki-br"/>  [ea:searchmodule] 0: std-java-webapplication v0.1 (Skeleton for creating standard java web application)<br class="xooki-br"/>[ea:searchmodule] 1: std-ant-plugin v0.1 (Skeleton for creating ant based plugin for easyant)<br class="xooki-br"/>[ea:searchmodule] 2: std-java-application v0.1 (Skeleton for creating standard java application)<br class="xooki-br"/>[ea:searchmodule] 3: std-skeleton v0.1 (Emtpy skeleton structure)<br class="xooki-br"/>[ea:searchmodule] Choose a number: (0, 1, 2, 3)
+</pre>
+Then easyant will prompt you to set information related to the generated project like organisation name, module name revision.
+<pre>
+    [input] The path where the skeleton project will be unzipped [.]<br class="xooki-br"/><br class="xooki-br"/>    [input] Organisation name of YOUR project<br class="xooki-br"/>org.mycompany<br class="xooki-br"/>    [input] Module name of YOUR project<br class="xooki-br"/>myProject<br class="xooki-br"/>    [input] Revision number of YOUR project [0.1]
+</pre>
+
+<h3>Generate a project structure using skeleton's properties</h3>
+EasyAnt also provides an alternative way to use skeletons. It can be used by settings properties. <br class="xooki-br"/>When runnning in interactive mode (default behavior) easyant will prompt you to set many properties to define which skeleton should be used and some properties related to the generated project (like organisation name, module name, and revision).<br class="xooki-br"/><p>If you prefer to use it in that way you should use ":generate" target.<br class="xooki-br"/>Example if your skeleton module is imported as "skeleton", you should use :</p>
+<pre>&gt; easyant skeleton:create</pre>
+<pre>
+[input] Organisation name of the skeleton project<br class="xooki-br"/>    org.apache.easyant.skeletons<br class="xooki-br"/>[input] Module name of the skeleton project<br class="xooki-br"/>    std-java-skeleton<br class="xooki-br"/>[input] Revision number of the skeleton project<br class="xooki-br"/>    0.1<br class="xooki-br"/>[input] The path where the skeleton project will be unzipped [.]<br class="xooki-br"/>    .<br class="xooki-br"/>[input] Organization name of YOUR project<br class="xooki-br"/>org.mycompany<br class="xooki-br"/>[input] Module name of YOUR project<br class="xooki-br"/>myProject<br class="xooki-br"/>[input] Revision number of YOUR project [0.1]<br class="xooki-br"/>    0.1
+</pre>
+After a few seconds you get your future project ready.<br class="xooki-br"/><br class="xooki-br"/><h2>How can i create my own skeleton ?</h2>
+Ask easyant to create a new skeleton by using ":newskeleton" target
+<pre>&gt; easyant skeleton:newskeleton</pre>
+Then easyant will prompt you to set a few information like the skeleton organisation name, skeleton name, and the future revision.
+<pre>
+    [input] The path where the skeleton project will be unzipped [.]<br class="xooki-br"/>    [input] Organisation name of YOUR project [org.apache.easyant.skeletons]<br class="xooki-br"/><br class="xooki-br"/>    [input] Module name of YOUR project<br class="xooki-br"/>myskeleton<br class="xooki-br"/>    [input] Revision number of YOUR project [0.1]<br class="xooki-br"/>
+</pre>
+After a few second you get an ready to use structure for your skeleton.
+<pre>
+.<br class="xooki-br"/>|-- module.ivy<br class="xooki-br"/>`-- src<br class="xooki-br"/>    |-- main<br class="xooki-br"/>    |   `-- resources<br class="xooki-br"/>    |       `-- module.ivy.tpl<br class="xooki-br"/>    `-- test<br class="xooki-br"/>        `-- antunit<br class="xooki-br"/>            `-- myskeleton-test.xml
+</pre>
+The module.ivy is the module descriptor of your skeleton.<br class="xooki-br"/>src/main/resources is the content of your skeleton.<br class="xooki-br"/><br class="xooki-br"/>If you need to use pattern replacement, you must add a .tpl at the end of your file.<br class="xooki-br"/><br class="xooki-br"/><p>Example :<br class="xooki-br"/>Supposing we want to create a project called "std-java-skeleton".
+<ul>
+  <li>we need to create a directory structure (src/main/java, src/main/resources etc...)</li>
+  <li>then we will update module.ivy template namedmodule.ivy.tpl<br class="xooki-br"/>    This file will look like this
+<pre>
+&lt;ivy-module version="2.0"&gt; <br class="xooki-br"/>    &lt;info organisation="@project.organization.name@" module="@project.module.name@" revision="@project.revision.number@" status="integration" &gt;<br class="xooki-br"/>        &lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.2"/&gt;<br class="xooki-br"/>    &lt;/info&gt;<br class="xooki-br"/>    &lt;configurations&gt;<br class="xooki-br"/>        &lt;conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf"/&gt;<br class="xooki-br"/>        &lt;conf name="test" visibility="private" description="this scope<br class="xooki-br"/>                  indicates that the dependency is not required for normal use of <br class="xooki-br"/>                  the application, and is only available for the test compilation <br class="xooki-br"/>                  and execution phases."/&gt;<br class="xooki-br"/>    &lt;/config
 urations&gt;<br class="xooki-br"/>    &lt;dependencies/&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+</li>
+</ul>
+By default easyant comes with 3 replacement patterns:<br class="xooki-br"/>    <ul>
+      <li>project.organisation</li>
+      <li>project.module</li>
+      <li>project.revision</li>
+    </ul>
+Every .tpl file that contains one of those 3 patterns between @ delimiter will be replaced when extracting the skeleton.<br class="xooki-br"/>
+<pre>
+.<br class="xooki-br"/>|-- module.ivy<br class="xooki-br"/>`-- src<br class="xooki-br"/>    |-- main<br class="xooki-br"/>    |   `-- resources<br class="xooki-br"/>    |       |-- module.ivy.tpl<br class="xooki-br"/>    |       `-- src<br class="xooki-br"/>    |           |-- main<br class="xooki-br"/>    |           |   `-- resources<br class="xooki-br"/>    |           |       `-- temp-plugin.ant.tpl<br class="xooki-br"/>    |           `-- test<br class="xooki-br"/>    |               `-- antunit<br class="xooki-br"/>    |                   `-- temp-plugin-test.xml.tpl<br class="xooki-br"/>    `-- test<br class="xooki-br"/>        `-- antunit
+</pre>
+
+Optionnaly you can add a post install script that will be run after unpacking the skeleton. This is pretty usefull to enhance skeleton behavior and do some post processing.<br class="xooki-br"/>This post install script is named skeleton.postinstall.ant (but can be configured through "skeleton.postinstall.script" property).<br class="xooki-br"/><br class="xooki-br"/><h2>List of existing project skeletons</h2>
+Here you can find a list of skeletons provided by easyant distribution.
+<table>
+  <thead>
+     <tr>
+        <td>Organisation</td>
+        <td>Module</td>
+        <td>Revision</td>
+        <td>Description</td>
+     </tr>
+  </thead>
+  <tbody>
+
+     <tr>
+        <td>org.apache.easyant.skeletons</td>
+        <td>std-java-application</td>
+        <td>0.1</td>
+        <td>Project skeleton used to create standard java application</td>
+     </tr>
+
+     <tr>
+        <td>org.apache.easyant.skeletons</td>
+        <td>std-java-webapplication</td>
+        <td>0.1</td>
+        <td>Project skeleton used to create standard java web application</td>
+     </tr>
+     <tr>
+        <td>org.apache.easyant.skeletons</td>
+        <td>std-ant-plugin</td>
+        <td>0.1</td>
+        <td>Project skeleton used to create easyant plugins</td>
+     </tr>
+     <tr>
+        <td>org.apache.easyant.skeletons</td>
+        <td>std-skeleton</td>
+        <td>0.1</td>
+        <td>Project skeleton used to create new skeletons</td>
+     </tr>
+  </tbody>
+</table>
+    </div>
+    <!-- end #posts -->
+    <!-- end #links -->
+    <div style="clear: both;">&nbsp;</div>
+</div>
+<!-- end #content -->
+<div id="footer">
+    <p id="legal">
+        <i>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>.</i><br>
+        <i>Apache EasyAnt, Apache Ivy, Apache Ant, Ivy, Ant, Apache, the Apache Ivy logo, the Apache Ant logo and the Apache feather logo are trademarks of The Apache Software Foundation.</i><br>
+        <i>All other marks mentioned may be trademarks or registered trademarks of their respective owners. </i>
+    </p>
+</div>
+<!-- end #footer -->
+</body>
+</html>

Propchange: incubator/easyant/site/staging/history/trunk/howto/skeleton.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/site/staging/history/trunk/howto/skeleton.html
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/site/staging/history/trunk/howto/skeleton.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/easyant/site/staging/history/trunk/howto/writePlugins.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/howto/writePlugins.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/howto/writePlugins.html (added)
+++ incubator/easyant/site/staging/history/trunk/howto/writePlugins.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,268 @@
+<!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>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 1};</script>   
+    
+
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <title>Writing plugins</title>
+  <meta name="keywords" content="" />
+  <meta name="description" content="" />
+  <link rel="stylesheet" type="text/css" href="../../../style/style.css" media="screen"/>
+  <!-- for tree, see if it would better go in xooki.js -->
+  <link rel="stylesheet" type="text/css" href="../../../style/tree.css" />
+  <script src="../../../js/jquery.pack.js" type="text/javascript"></script>
+  <script src="../../../js/jquery.treeview.js" type="text/javascript"></script>
+  <script type="text/javascript">
+  $(document).ready(function(){$("#treemenu").Treeview({speed: "fast",store: true});});
+  </script>
+
+<script language="javascript" type="text/javascript">xooki = {u: function(url) {return "../../../xooki/"+url;}};</script>
+</head>
+<body>
+<div id="header">
+    <div id="incubatorlogo">
+	<img src="../../../images/apache-incubator-logo.png"/>
+    </div>    
+    <div id="topmenu">
+        <ul>
+            <li><a href="../../../index.html" id="topmenu1" accesskey="1" title="">Home</a></li>
+            <li><a href="../../../contact.html" id="topmenu2" accesskey="2" title="">Get involved</a></li>
+        </ul>
+    </div>
+</div>
+<!-- end #header -->
+<div id="menu">
+    <ul>
+        <li class="first"><a href="../../../index.html" accesskey="1" title="">Home</a></li>
+        <li><a href="../../../download.html" accesskey="1" title="">Download</a></li>
+        <li><a href="http://www.apache.org/licenses/" title="">License</a></li>
+        <li><a href="../../../history/trunk/tutorials.html" title="">Tutorials</a></li>
+        <li><a href="../../../history/trunk/reference.html" title="">References</a></li>
+    </ul>
+</div>
+<!-- end #menu -->
+<div id="content">
+    <div id="sidebar" class="boxed">
+        <h2 class="title">Apache EasyAnt&#153;</h2>
+        <div id="links">
+                <ul id="treemenu" class="treeview"><li id="xooki-index" class="submenu"><a href="../../../index.html" >Home</a><ul class="closed"><li id="xooki-features"><a href="../../../features.html" >Features</a></li><li id="xooki-license"><a href="http://www.apache.org/licenses/" >License</a></li><li id="xooki-faq"><a href="../../../faq.html" >FAQ</a></li></ul></li><li id="xooki-download"><a href="../../../download.html" >Download</a></li><li id="xooki-history" class="submenu">History<ul class="open"><li id="xooki-history/trunk/index" class="submenu"><a href="../../../history/trunk/index.html" >Trunk</a><ul class="open"><li id="xooki-history/trunk/tutorials" class="submenu"><a href="../../../history/trunk/tutorials.html" >Tutorials</a><ul class="open"><li id="xooki-history/trunk/howto/GettingStarted"><a href="../../../history/trunk/howto/GettingStarted.html" >Getting Started</a></li><li id="xooki-history/trunk/howto/SettingupasimpleEasyAntproject"><a href="../../../hist
 ory/trunk/howto/SettingupasimpleEasyAntproject.html" >Setting up a simple EasyAnt Project</a></li><li id="xooki-history/trunk/howto/writePlugins"><a href="../../../history/trunk/howto/writePlugins.html" class="current">Writing plugins</a></li><li id="xooki-history/trunk/howto/skeleton"><a href="../../../history/trunk/howto/skeleton.html" >Working with skeletons of project</a></li><li id="xooki-history/trunk/howto/multimodules"><a href="../../../history/trunk/howto/multimodules.html" >Working with multi-modules</a></li><li id="xooki-history/trunk/howto/BuildConfigurations"><a href="../../../history/trunk/howto/BuildConfigurations.html" >Build configurations</a></li></ul></li><li id="xooki-history/trunk/reference" class="submenu"><a href="../../../history/trunk/reference.html" >Reference</a><ul class="closed"><li id="xooki-history/trunk/ref/features"><a href="../../../history/trunk/ref/features.html" >Features</a></li><li id="xooki-history/trunk/ref/Defaultlifecycle"><a href="
 ../../../history/trunk/ref/Defaultlifecycle.html" >Default lifecycle</a></li><li id="xooki-history/trunk/ref/Directorystructure"><a href="../../../history/trunk/ref/Directorystructure.html" >Directory structure</a></li><li id="xooki-history/trunk/ref/Modulefiles"><a href="../../../history/trunk/ref/Modulefiles.html" >Module files</a></li><li id="xooki-history/trunk/ref/ProjectMancommand"><a href="../../../history/trunk/ref/ProjectMancommand.html" >ProjectMan commands</a></li><li id="xooki-history/trunk/ref/phases"><a href="../../../history/trunk/ref/phases.html" >Understanding phases</a></li><li id="xooki-history/trunk/ref/anttasks" class="submenu"><a href="../../../history/trunk/ref/anttasks.html" >Ant Tasks</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/BindTarget"><a href="../../../history/trunk/ref/anttasks/BindTarget.html" >bindtarget</a></li><li id="xooki-history/trunk/ref/anttasks/checkresolver"><a href="../../../history/trunk/ref/anttasks/checkresolve
 r.html" >checkresolver</a></li><li id="xooki-history/trunk/ref/anttasks/CoreVersiontask"><a href="../../../history/trunk/ref/anttasks/CoreVersiontask.html" >core-version</a></li><li id="xooki-history/trunk/ref/anttasks/easyant"><a href="../../../history/trunk/ref/anttasks/easyant.html" >easyant</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath" class="submenu"><a href="../../../history/trunk/ref/anttasks/findclasspath.html" >findclasspath</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy"><a href="../../../history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy.html" >basic-configuration-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/environment-strategy"><a href="../../../history/trunk/ref/anttasks/findclasspath/environment-strategy.html" >environment-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/project-dependency-strategy"><a href="../../..
 /history/trunk/ref/anttasks/findclasspath/project-dependency-strategy.html" >project-dependency-strategy</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/Importtask" class="submenu"><a href="../../../history/trunk/ref/anttasks/Importtask.html" >import</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/plugintask"><a href="../../../history/trunk/ref/anttasks/plugintask.html" >plugin task</a></li><li id="xooki-history/trunk/ref/anttasks/buildtypetask"><a href="../../../history/trunk/ref/anttasks/buildtypetask.html" >buildtype task</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/menugenerator"><a href="../../../history/trunk/ref/anttasks/menugenerator.html" >menugenerator</a></li><li id="xooki-history/trunk/ref/anttasks/LoadModuletask"><a href="../../../history/trunk/ref/anttasks/LoadModuletask.html" >loadmodule</a></li><li id="xooki-history/trunk/ref/anttasks/Parametertask"><a href="../../../history/trunk/ref/anttasks/Parametertask.html" >param
 eter</a></li><li id="xooki-history/trunk/ref/anttasks/Pathtask"><a href="../../../history/trunk/ref/anttasks/Pathtask.html" >path</a></li><li id="xooki-history/trunk/ref/anttasks/Property"><a href="../../../history/trunk/ref/anttasks/Property.html" >property</a></li><li id="xooki-history/trunk/ref/anttasks/registerartifact"><a href="../../../history/trunk/ref/anttasks/registerartifact.html" >registerartifact</a></li><li id="xooki-history/trunk/ref/anttasks/SubModuletask"><a href="../../../history/trunk/ref/anttasks/SubModuletask.html" >submodule</a></li></ul></li><li id="xooki-history/trunk/ref/buildtypes/buildtypes"><a href="../../../history/trunk/ref/buildtypes/buildtypes.html" >Build Types</a></li><li id="xooki-history/trunk/ref/plugins/plugins"><a href="../../../history/trunk/ref/plugins/plugins.html" >Plugins</a></li><li id="xooki-history/trunk/ref/EasyAntconfigurationfile"><a href="../../../history/trunk/ref/EasyAntconfigurationfile.html" >EasyAnt configuration file</a
 ></li><li id="xooki-history/trunk/ref/ProjectIvyInstance"><a href="../../../history/trunk/ref/ProjectIvyInstance.html" >Project Ivy Instance</a></li></ul></li><li id="xooki-history/trunk/changelog" class="submenu"><a href="../../../history/trunk/changelog.html" >Changelog</a><ul class="closed"><li id="xooki-history/trunk/changelog/0.7"><a href="../../../history/trunk/changelog/0.7.html" >0.7</a></li></ul></li><li id="xooki-history/trunk/faq"><a href="../../../history/trunk/faq.html" >FAQ</a></li><li id="xooki-history/trunk/contact"><a href="../../../history/trunk/contact.html" >Contact</a></li></ul></li></ul></li><li id="xooki-contact" class="submenu"><a href="../../../contact.html" >Get Involved</a><ul class="closed"><li id="xooki-Mailinglist"><a href="../../../Mailinglist.html" >Mailing list</a></li><li id="xooki-Issuetracking"><a href="../../../Issuetracking.html" >Issue tracking</a></li><li id="xooki-Sourcerepository"><a href="../../../Sourcerepository.html" >Source repo
 sitory</a></li><li id="xooki-irc"><a href="../../../irc.html" >IRC</a></li></ul></li><li id="xooki-Team"><a href="../../../Team.html" >Team</a></li><li id="xooki-foundation" class="submenu"><a href="../../../foundation.html" >Foundation</a><ul class="closed"><li id="xooki-undefined"><a href="http://www.apache.org" >ASF</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/sponsorship.html" >Sponsorship</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/thanks.html" >Thanks</a></li></ul></li></ul>
+        </div>
+    </div>
+
+    <div id="posts">
+        <br class="xooki-br"/><h1>How To write a plugin for easyant</h1>
+
+<p>A module in Easyant is a logical unit that provides additional pluggable functionality to your build set up. You may choose to use or ignore such a plugin when running the build. A module is composed, in the least, of a ant script associated with a ivy specs file.<br class="xooki-br"/>So let's write a Hello World plugin.</p>
+
+<h2>Generating plugin from a skeleton</h2>
+First we need to create a plugin structure. To ease plugin development easyant came with a skeleton for plugins.
+<pre>&gt; easyant skeleton:newplugin</pre>
+It will then ask you a few questions 
+<pre>
+    [input] The path where the skeleton project will be unzipped [.]<br class="xooki-br"/><br class="xooki-br"/>    [input] Organisation name of YOUR project [org.apache.easyant.plugins]<br class="xooki-br"/>org.mycompany<br class="xooki-br"/>    [input] Module name of YOUR project<br class="xooki-br"/>myplugin<br class="xooki-br"/>    [input] Revision number of YOUR project [0.1]<br class="xooki-br"/>
+</pre>
+That's all !<br class="xooki-br"/>We've a ready to use plugin structure.
+<pre>
+&lt;!--replace me by an image --&gt;<br class="xooki-br"/>|-- module.ivy<br class="xooki-br"/>`-- src<br class="xooki-br"/>    |-- main<br class="xooki-br"/>    |   `-- resources<br class="xooki-br"/>    |       `-- myplugin.ant<br class="xooki-br"/>    `-- test<br class="xooki-br"/>        `-- antunit<br class="xooki-br"/>            |-- common<br class="xooki-br"/>            |   `-- test-utils.ant<br class="xooki-br"/>            `-- myplugin-test.xml<br class="xooki-br"/>
+</pre>
+
+<h2>Ant script</h2>
+The skeleton has generated the plugin main script in src/main/resources/[MYPLUGIN].ant
+<pre>
+&lt;project name="org.mycompany;myplugin" <br class="xooki-br"/>        xmlns:ivy="antlib:org.apache.ivy.ant" <br class="xooki-br"/>        xmlns:ea="antlib:org.apache.easyant"&gt;<br class="xooki-br"/>        <br class="xooki-br"/>    &lt;!-- Force compliance with easyant-core to 0.7 or higher --&gt;<br class="xooki-br"/>    &lt;!-- &lt;ea:core-version requiredrevision="[0.7,+]" /&gt; --&gt;<br class="xooki-br"/><br class="xooki-br"/>    &lt;!-- Sample init target --&gt;<br class="xooki-br"/>    &lt;target name=":init" phase="validate"&gt;<br class="xooki-br"/>        &lt;!-- you should remove this echo message --&gt;<br class="xooki-br"/>        &lt;echo level="debug"&gt;This is the init target of myplugin&lt;/echo&gt;<br class="xooki-br"/>    &lt;/target&gt;<br class="xooki-br"/>    <br class="xooki-br"/>    &lt;!-- define a generic default target for this plugin --&gt;<br class="xooki-br"/>    &lt;target name="doit" depends="validate"/&gt;<br class="xooki-br"/>&lt;/proje
 ct&gt;
+</pre>
+By convention, projectname of the plugin should be formed like 
+<pre>
+[organisation]#[module]
+</pre>
+Example: 
+<pre>
+org.mycompany#myplugin
+</pre>
+
+<h3>Understanding Phases</h3>
+Phases are high-level build activities, like "package" or "documentation".  Plugins typically add low-level tasks to one or more phases. For example, a plugin might add a "build jar" task to the "package" phase, or a "generate javadoc" task to the "documentation" phase.  Less typically, a plugin can also define new phases for other plugins to use.<br class="xooki-br"/>In standard build types the project-lifecycle is defined by a plugin named <a href="../ref/plugins/phases-std.html">phases-std</a>.<br class="xooki-br"/><br class="xooki-br"/><h3>Pre conditions</h3>
+A build module should always check that a set of pre conditions is met in the validate phase (for static pre conditions) or at execution (for dynamic pre conditions).<br class="xooki-br"/>By convention, this target should be named ":init" and associated to the "validate" phase.<br class="xooki-br"/><br class="xooki-br"/>Pre conditions, including for example - checking the existence of a file or a directory, could be performed inside this target. Additionally, this target is a great place to do global initializations that are needed for the rest of the build. This could include a taskdef initialization.<br class="xooki-br"/>Pre conditions can be performed by using <a href="../ref/anttasks/Parametertask.html">parameter task</a>.<br class="xooki-br"/>Example :
+<pre>
+&lt;target name=":init" phase="validate"&gt;<br class="xooki-br"/>    &lt;!-- Our plugin need at least the existance of "validate" phase" --&gt;<br class="xooki-br"/>    &lt;ea:parameter phase="validate" /&gt;<br class="xooki-br"/>        &lt;ea:parameter property="username" required="false" description="the username used to display en 'hello Username' by calling :hello target"/&gt;<br class="xooki-br"/>&lt;/target&gt;
+</pre>
+
+<h3>Target Naming Conventions</h3>
+There is a conventional difference in the way public and private targets are named in Easyant. A <i>public target</i> is one that makes sense for the end user to be aware of, while a <i>private target</i> should be hidden from the end user.<br class="xooki-br"/><br class="xooki-br"/>Conventionally, a public target should always have an associated 'description' attribute. Further, it's name should always begin with a ':'. <br class="xooki-br"/><br class="xooki-br"/>Example :
+<pre>
+&lt;target name=":helloworld" depends="validate" description="display an hello world"&gt;<br class="xooki-br"/>    &lt;echo&gt;hello world !&lt;/echo&gt;<br class="xooki-br"/>&lt;/target&gt;<br class="xooki-br"/><br class="xooki-br"/>&lt;target name=":hello" depends="validate" depends="-check-username" description="display an hello to current user"&gt;<br class="xooki-br"/>    &lt;echo mess="Hello ${username}"/&gt;<br class="xooki-br"/>&lt;/target&gt;
+</pre>
+
+Whereas a private target name should begin with '-'.<br class="xooki-br"/><br class="xooki-br"/>Example :
+<pre>
+&lt;!-- this target initialize username property if it's not already set --&gt;<br class="xooki-br"/>&lt;target name="-check-username" unless="username"&gt;<br class="xooki-br"/>    &lt;echo&gt;You can also add a "-Dusername=YOU" on the commandline to display a more personal hello message&lt;/echo&gt;<br class="xooki-br"/>    &lt;property name="username" value="${user.name}"/&gt;<br class="xooki-br"/>&lt;/target&gt;
+</pre>
+
+<h3>The 'doit' Target</h3>
+Each module should have a target called <i>doit</i>. This is an important convention. This target should perform the essential purpose of the module when invoked independently.<br class="xooki-br"/>Example: 
+<pre>
+&lt;target name="doit" depends=":helloworld"/&gt;
+</pre>
+
+<h3>What a build module should document</h3>
+<ul>
+<li>phases on which it relies</li>
+<li>parameters (properties, resource collections, paths).  For each parameter specify name, description, whether it is required, and optionally a default value.</li>
+<li>expected environment (files in a directory, a server up and running, ...)</li>
+<li>results produced</li>
+</ul>
+
+A build module should always check that the set of pre conditions is met in the validate phase (for static pre conditions) or at execution (for dynamic pre conditions).<br class="xooki-br"/><br class="xooki-br"/>If ever what is considered static pre condition by a module is actually generated by another one, it is still possible to assign the build module validate phase to a phase triggered after the execution of the other build module (using phase mapping with the 'use' task).<br class="xooki-br"/><br class="xooki-br"/><h2>Publishing your plugin</h2>
+You can easily publish your plugin to an easyant repository using the standard phases <i>publish-shared (for snapshot)</i> or <i>release</i>
+<pre>&gt;  easyant publish-local</pre>
+<pre>&gt;  easyant publish-shared</pre>
+<pre>&gt;  easyant release</pre>
+
+By default plugins are published to a repository named <i>easyant-shared-modules</i> stored in $USER_HOME/.easyant/repository/easyant-shared-modules/.<br class="xooki-br"/><br class="xooki-br"/>You can specify the repository name using one of the following property 
+<ul>
+  <li>release.resolver</li>
+  <li>snapshot.resolver</li>
+</ul>
+<div id="note">Note: Repository must exist in easyant ivy instance. See <a href="../ref/ConfigureEasyantIvySettings.html">configure easyant ivy instance</a> man page for more informations.</div>
+
+<h2>Using your plugin in your project</h2>
+Considering that you published your plugin in a easyant repository, you could use it in your project.
+<pre>
+&lt;ivy-module version="2.0" xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"&gt; <br class="xooki-br"/>    &lt;info organisation="org.mycompany" module="myproject" <br class="xooki-br"/>            status="integration" revision="0.1"&gt;<br class="xooki-br"/>        &lt;ea:build module="build-std-java" revision="0.2"&gt;<br class="xooki-br"/>            &lt;ea:plugin organisation="org.mycompany" module="myplugin" revision="0.1" as="myplugin"/&gt;<br class="xooki-br"/>        &lt;/ea:build&gt; <br class="xooki-br"/>    &lt;/info&gt;<br class="xooki-br"/>    &lt;publications&gt;<br class="xooki-br"/>                &lt;artifact name="myplugin" type="ant"/&gt;<br class="xooki-br"/>        &lt;/publications&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+And now running 
+<pre>&gt; easyant -p </pre>
+We should see myplugin's target.
+<pre>
+Main targets:<br class="xooki-br"/>...<br class="xooki-br"/> mygplugin:hello                   display an hello to current user<br class="xooki-br"/> mygplugin:helloworld              display an hello world<br class="xooki-br"/>...
+</pre>
+
+<h2>Getting further</h2>
+
+<h3>Adding additional files to your module</h3>
+Sometimes, we need to have a .properties files related to a given plugin.<br class="xooki-br"/>Sometimes it could be an additional file (an .xsl file for example).<br class="xooki-br"/><br class="xooki-br"/>Before using it we must declare the new file in the plugin module descriptor.<br class="xooki-br"/>Open the module.ivy at the root level of plugin structure.
+<pre>
+&lt;ivy-module version="2.0" xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"&gt; <br class="xooki-br"/>    &lt;info organisation="org.mycompany" module="myplugin" <br class="xooki-br"/>            status="integration" revision="0.1"&gt;<br class="xooki-br"/>                &lt;!-- here we use build-std-ant-plugin build type that provide everything we need for plugin development --&gt;<br class="xooki-br"/>        &lt;ea:build module="build-std-ant-plugin" revision="0.1"/&gt;<br class="xooki-br"/>    &lt;/info&gt;<br class="xooki-br"/>    &lt;configurations&gt;<br class="xooki-br"/>        &lt;conf name="default" visibility="public" description="runtime dependencies artifact can be used with this conf"/&gt;<br class="xooki-br"/>        &lt;conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/&gt;
 <br class="xooki-br"/>        &lt;conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/&gt;<br class="xooki-br"/>    &lt;/configurations&gt;<br class="xooki-br"/>    &lt;publications&gt;<br class="xooki-br"/>                &lt;!--Defines the plugin main script --&gt;<br class="xooki-br"/>                &lt;artifact name="myplugin" type="ant"/&gt;<br class="xooki-br"/>                &lt;!--Defines a property file --&gt;<br class="xooki-br"/>                &lt;artifact name="myplugin" type="properties"/&gt;<br class="xooki-br"/>                &lt;artifact name="myfile" type="xsl"/&gt;<br class="xooki-br"/>        &lt;/publications&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+Here we defined that our plugin is composed of 3 files :
+<ul>
+<li>myplugin.ant (if name argument is not specified the module name will be used)</li>
+<li>myplugin.properties</li>
+<li>myfile.xsl</li>
+</ul>
+
+Now we will see how we can use those files in our plugin script.<br class="xooki-br"/>Considering that a plugin must be generic and can be retrieved from different repository (filesystem, url, ftp, etc...) we should take care of how we reference those additional files in our script.<br class="xooki-br"/>To avoid any problems due to repository layout configuration, easyant gives you gives you access to properties containing the absolute path of a declared artifact. Those properties are composed with the following syntax :
+<pre>
+[organisation].[module].[artifact].[type].file
+</pre>
+Example: 
+<pre>
+org.mycompany.myplugin.myfile.xsl.file
+</pre>
+
+The '.artifact' is optional when module name and artifact name are the same. 
+<pre>
+[organisation].[module].[type].file
+</pre>
+Example: 
+<pre>
+org.mycompany#myplugin.properties.file
+</pre>
+
+So loading a property file could be easy as :
+<pre>
+&lt;property file="${org.mycompany#myplugin.properties.file}" /&gt;
+</pre>
+
+If you want to copy / use an additional file
+<pre>
+&lt;copy file="${org.mycompany.myplugin.myfile.xsl.file}" tofile="..."/&gt;
+</pre>
+
+<h3>Using third party libraries</h3>
+Most of the time when we write plugins we want to use third party ant tasks.<br class="xooki-br"/><br class="xooki-br"/><h4>Declaring dependencies in module.ivy</h4>
+First we need to declare the dependency in the plugin module.ivy.
+<pre>
+&lt;ivy-module version="2.0" xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"&gt; <br class="xooki-br"/>    &lt;info organisation="org.mycompany" module="myplugin" <br class="xooki-br"/>            status="integration" revision="0.1"&gt;<br class="xooki-br"/>        &lt;ea:build module="build-std-ant-plugin" revision="0.1"/&gt;<br class="xooki-br"/>    &lt;/info&gt;<br class="xooki-br"/>    &lt;configurations&gt;<br class="xooki-br"/>        &lt;conf name="default" visibility="public" description="runtime dependencies artifact can be used with this conf"/&gt;<br class="xooki-br"/>        &lt;conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/&gt;<br class="xooki-br"/>        &lt;conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or 
 a container to provide it. It is only available on the compilation classpath, and is not transitive."/&gt;<br class="xooki-br"/>    &lt;/configurations&gt;<br class="xooki-br"/>    &lt;publications&gt;<br class="xooki-br"/>                &lt;artifact name="myplugin" type="ant"/&gt;<br class="xooki-br"/>        &lt;/publications&gt;<br class="xooki-br"/><br class="xooki-br"/>    &lt;dependencies&gt;<br class="xooki-br"/>        &lt;!-- your plugin dependencies goes here --&gt;<br class="xooki-br"/>        &lt;dependency org="foobar" name="amazingAntTask" rev="4.4" conf="default-&gt;default" /&gt;<br class="xooki-br"/>        &lt;dependency org="foobar" name="myOtherAntTask" rev="4.4" conf="default-&gt;default" /&gt;<br class="xooki-br"/>    &lt;/dependencies&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+Here we depend on amazingAntTask and myOtherAntTask provided by foobar organisation.<br class="xooki-br"/><h4>Using dependency in your plugin ant script?</h4>
+Easyant automatically creates a classpath specific for each plugin, this classpath contains all the required dependency <i>.jars</i>.<br class="xooki-br"/><br class="xooki-br"/>The classpath is named 
+<pre>
+[organisation]#[module].classpath
+</pre>
+Example:
+<pre>
+org.mycompany#myplugin.classpath
+</pre> 
+Since this classpath is auto-created you can use it to reference your taskdef.
+<pre>
+&lt;target name=":init" phase="validate"&gt;<br class="xooki-br"/>    &lt;ea:parameter phase="validate"/&gt;<br class="xooki-br"/>    ...<br class="xooki-br"/>    &lt;taskdef resource="amazingAntTask.properties" classpathref="org.mycompany#myplugin.classpath" /&gt;<br class="xooki-br"/>    &lt;taskdef resource="anotherAntTask.properties" classpathref="org.mycompany#myplugin.classpath" /&gt;<br class="xooki-br"/>&lt;/target&gt;
+</pre>
+
+<h3>Compatibilty with core revision</h3>
+A module can be dependent on features available in Easyant core. As such, it is possible for a module to be functional with particular versions of Easyant only.<br class="xooki-br"/>Easyant provides a way for modules to explicitly specify their dependency on core revisions. <br class="xooki-br"/>A module may use the ea:core-version task to specify such a dependency.<br class="xooki-br"/>A task may depend on: 
+<ul>
+<li>static version (Example : 0.5)</li>
+<li>dynamic version (Example : latest.revision) even if we do not recommand to use it</li>
+<li>listed version (Example : (0.1,0.3,0.5) )</li>
+<li>range version (Example : [0.5,0.8] means from 0.5 to 0.8. Example2 : [0.5,+] means all version superior to 0.5)</li>
+</ul>
+<pre>
+&lt;project name="org.mycompany;myplugin" <br class="xooki-br"/>        xmlns:ivy="antlib:org.apache.ivy.ant" <br class="xooki-br"/>        xmlns:ea="antlib:org.apache.easyant"&gt;<br class="xooki-br"/>        <br class="xooki-br"/>    &lt;!-- Force compliance with easyant-core to 0.7 or higher --&gt;<br class="xooki-br"/>        &lt;ea:core-version requiredrevision="[0.7,+]" /&gt;<br class="xooki-br"/><br class="xooki-br"/>    &lt;!-- Sample init target --&gt;<br class="xooki-br"/>    &lt;target name=":init" phase="validate"&gt;<br class="xooki-br"/>        &lt;!-- you should  remove this echo message --&gt;<br class="xooki-br"/>        &lt;echo level="debug"&gt;This is the init target of myplugin&lt;/echo&gt;<br class="xooki-br"/>    &lt;/target&gt;<br class="xooki-br"/><br class="xooki-br"/>    ...<br class="xooki-br"/><br class="xooki-br"/>    &lt;!-- define a generic default target for this plugin --&gt;<br class="xooki-br"/>    &lt;target name="doit" depends="validate"
 /&gt;<br class="xooki-br"/>&lt;/project&gt;
+</pre>
+
+<h3>Writing plugin test case</h3>
+By default the skeleton has generated a antunit test file in src/test/antunit/[module]-test.ant.<br class="xooki-br"/><br class="xooki-br"/>So in our case let's open "src/test/antunit/myplugin-test.xml"
+<pre>
+&lt;project name="org.mycompany;myplugin-test" xmlns:au="antlib:org.apache.ant.antunit"&gt;<br class="xooki-br"/>    <br class="xooki-br"/>    &lt;!-- Mocking required phase --&gt; <br class="xooki-br"/>    &lt;phase name="validate"/&gt;<br class="xooki-br"/>        <br class="xooki-br"/>    &lt;!-- Import your plugin --&gt; <br class="xooki-br"/>    &lt;import file="../../main/resources/myplugin.ant"/&gt;<br class="xooki-br"/>    <br class="xooki-br"/>    &lt;!-- Defines a setUp / tearDown (before each test) that cleans the environment --&gt; <br class="xooki-br"/>    &lt;target name="clean" description="remove stale build artifacts before / after each test"&gt;<br class="xooki-br"/>        &lt;delete dir="${basedir}" includeemptydirs="true"&gt;<br class="xooki-br"/>            &lt;include name="**/target/**"/&gt;<br class="xooki-br"/>            &lt;include name="**/lib/**"/&gt;<br class="xooki-br"/>        &lt;/delete&gt;<br class="xooki-br"/>    &lt;/target&gt;<br class=
 "xooki-br"/>    <br class="xooki-br"/>    &lt;target name="setUp" depends="clean"/&gt;<br class="xooki-br"/>    &lt;target name="tearDown" depends="clean"/&gt;<br class="xooki-br"/>    <br class="xooki-br"/>    &lt;!-- init test case --&gt;         <br class="xooki-br"/>    &lt;target name="testInit"&gt;<br class="xooki-br"/>        &lt;antcall target=":init"/&gt;<br class="xooki-br"/>        &lt;au:assertLogContains level="debug" text="This is the init target of myplugin"/&gt;<br class="xooki-br"/>    &lt;/target&gt;<br class="xooki-br"/>    <br class="xooki-br"/>&lt;/project&gt;   
+</pre>
+Considering that our plugin relies on an externally defined phase (validate in our example) we must mock it in our test.<br class="xooki-br"/>Then we :
+<ul>
+  <li>import the plugin</li>
+  <li>define a generic tearDown, setUp method that cleans the target and lib directories.</li>
+  <li>define a test case for the init target that check that the output log contains "This is the init target of myplugin"</li>
+</ul>
+
+All targets prefixed by "test" will be executed as a test case (similar to junit 3 behavior).<br class="xooki-br"/><br class="xooki-br"/>Now we will write a test case for our ":helloworld" target.
+<pre>
+&lt;target name="testHelloWorld"&gt;<br class="xooki-br"/>    &lt;antcall target=":helloworld"/&gt;<br class="xooki-br"/>    &lt;au:assertLogContains text="hello world !"/&gt;<br class="xooki-br"/>&lt;/target&gt;
+</pre>
+
+Tests can be executed by running :
+<pre>&gt; easyant test</pre>
+
+You can access test-report at "target/antunit/html/index.html" or if you prefer the brut result "target/antunit/xml/TEST-src.test.antunit.myplugin-test_xml.xml".
+    </div>
+    <!-- end #posts -->
+    <!-- end #links -->
+    <div style="clear: both;">&nbsp;</div>
+</div>
+<!-- end #content -->
+<div id="footer">
+    <p id="legal">
+        <i>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>.</i><br>
+        <i>Apache EasyAnt, Apache Ivy, Apache Ant, Ivy, Ant, Apache, the Apache Ivy logo, the Apache Ant logo and the Apache feather logo are trademarks of The Apache Software Foundation.</i><br>
+        <i>All other marks mentioned may be trademarks or registered trademarks of their respective owners. </i>
+    </p>
+</div>
+<!-- end #footer -->
+</body>
+</html>

Propchange: incubator/easyant/site/staging/history/trunk/howto/writePlugins.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/site/staging/history/trunk/howto/writePlugins.html
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/site/staging/history/trunk/howto/writePlugins.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/easyant/site/staging/history/trunk/index.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/index.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/index.html (added)
+++ incubator/easyant/site/staging/history/trunk/index.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,107 @@
+<!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>   
+    
+
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <title>Trunk</title>
+  <meta name="keywords" content="" />
+  <meta name="description" content="" />
+  <link rel="stylesheet" type="text/css" href="../../style/style.css" media="screen"/>
+  <!-- for tree, see if it would better go in xooki.js -->
+  <link rel="stylesheet" type="text/css" href="../../style/tree.css" />
+  <script src="../../js/jquery.pack.js" type="text/javascript"></script>
+  <script src="../../js/jquery.treeview.js" type="text/javascript"></script>
+  <script type="text/javascript">
+  $(document).ready(function(){$("#treemenu").Treeview({speed: "fast",store: true});});
+  </script>
+
+<script language="javascript" type="text/javascript">xooki = {u: function(url) {return "../../xooki/"+url;}};</script>
+</head>
+<body>
+<div id="header">
+    <div id="incubatorlogo">
+	<img src="../../images/apache-incubator-logo.png"/>
+    </div>    
+    <div id="topmenu">
+        <ul>
+            <li><a href="../../index.html" id="topmenu1" accesskey="1" title="">Home</a></li>
+            <li><a href="../../contact.html" id="topmenu2" accesskey="2" title="">Get involved</a></li>
+        </ul>
+    </div>
+</div>
+<!-- end #header -->
+<div id="menu">
+    <ul>
+        <li class="first"><a href="../../index.html" accesskey="1" title="">Home</a></li>
+        <li><a href="../../download.html" accesskey="1" title="">Download</a></li>
+        <li><a href="http://www.apache.org/licenses/" title="">License</a></li>
+        <li><a href="../../history/trunk/tutorials.html" title="">Tutorials</a></li>
+        <li><a href="../../history/trunk/reference.html" title="">References</a></li>
+    </ul>
+</div>
+<!-- end #menu -->
+<div id="content">
+    <div id="sidebar" class="boxed">
+        <h2 class="title">Apache EasyAnt&#153;</h2>
+        <div id="links">
+                <ul id="treemenu" class="treeview"><li id="xooki-index" class="submenu"><a href="../../index.html" >Home</a><ul class="closed"><li id="xooki-features"><a href="../../features.html" >Features</a></li><li id="xooki-license"><a href="http://www.apache.org/licenses/" >License</a></li><li id="xooki-faq"><a href="../../faq.html" >FAQ</a></li></ul></li><li id="xooki-download"><a href="../../download.html" >Download</a></li><li id="xooki-history" class="submenu">History<ul class="open"><li id="xooki-history/trunk/index" class="submenu"><a href="../../history/trunk/index.html" class="current">Trunk</a><ul class="open"><li id="xooki-history/trunk/tutorials" class="submenu"><a href="../../history/trunk/tutorials.html" >Tutorials</a><ul class="closed"><li id="xooki-history/trunk/howto/GettingStarted"><a href="../../history/trunk/howto/GettingStarted.html" >Getting Started</a></li><li id="xooki-history/trunk/howto/SettingupasimpleEasyAntproject"><a href="../../history/tru
 nk/howto/SettingupasimpleEasyAntproject.html" >Setting up a simple EasyAnt Project</a></li><li id="xooki-history/trunk/howto/writePlugins"><a href="../../history/trunk/howto/writePlugins.html" >Writing plugins</a></li><li id="xooki-history/trunk/howto/skeleton"><a href="../../history/trunk/howto/skeleton.html" >Working with skeletons of project</a></li><li id="xooki-history/trunk/howto/multimodules"><a href="../../history/trunk/howto/multimodules.html" >Working with multi-modules</a></li><li id="xooki-history/trunk/howto/BuildConfigurations"><a href="../../history/trunk/howto/BuildConfigurations.html" >Build configurations</a></li></ul></li><li id="xooki-history/trunk/reference" class="submenu"><a href="../../history/trunk/reference.html" >Reference</a><ul class="closed"><li id="xooki-history/trunk/ref/features"><a href="../../history/trunk/ref/features.html" >Features</a></li><li id="xooki-history/trunk/ref/Defaultlifecycle"><a href="../../history/trunk/ref/Defaultlifecycle
 .html" >Default lifecycle</a></li><li id="xooki-history/trunk/ref/Directorystructure"><a href="../../history/trunk/ref/Directorystructure.html" >Directory structure</a></li><li id="xooki-history/trunk/ref/Modulefiles"><a href="../../history/trunk/ref/Modulefiles.html" >Module files</a></li><li id="xooki-history/trunk/ref/ProjectMancommand"><a href="../../history/trunk/ref/ProjectMancommand.html" >ProjectMan commands</a></li><li id="xooki-history/trunk/ref/phases"><a href="../../history/trunk/ref/phases.html" >Understanding phases</a></li><li id="xooki-history/trunk/ref/anttasks" class="submenu"><a href="../../history/trunk/ref/anttasks.html" >Ant Tasks</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/BindTarget"><a href="../../history/trunk/ref/anttasks/BindTarget.html" >bindtarget</a></li><li id="xooki-history/trunk/ref/anttasks/checkresolver"><a href="../../history/trunk/ref/anttasks/checkresolver.html" >checkresolver</a></li><li id="xooki-history/trunk/ref/a
 nttasks/CoreVersiontask"><a href="../../history/trunk/ref/anttasks/CoreVersiontask.html" >core-version</a></li><li id="xooki-history/trunk/ref/anttasks/easyant"><a href="../../history/trunk/ref/anttasks/easyant.html" >easyant</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath" class="submenu"><a href="../../history/trunk/ref/anttasks/findclasspath.html" >findclasspath</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy"><a href="../../history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy.html" >basic-configuration-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/environment-strategy"><a href="../../history/trunk/ref/anttasks/findclasspath/environment-strategy.html" >environment-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/project-dependency-strategy"><a href="../../history/trunk/ref/anttasks/findclasspath/project-dependency-strategy.html" >proje
 ct-dependency-strategy</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/Importtask" class="submenu"><a href="../../history/trunk/ref/anttasks/Importtask.html" >import</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/plugintask"><a href="../../history/trunk/ref/anttasks/plugintask.html" >plugin task</a></li><li id="xooki-history/trunk/ref/anttasks/buildtypetask"><a href="../../history/trunk/ref/anttasks/buildtypetask.html" >buildtype task</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/menugenerator"><a href="../../history/trunk/ref/anttasks/menugenerator.html" >menugenerator</a></li><li id="xooki-history/trunk/ref/anttasks/LoadModuletask"><a href="../../history/trunk/ref/anttasks/LoadModuletask.html" >loadmodule</a></li><li id="xooki-history/trunk/ref/anttasks/Parametertask"><a href="../../history/trunk/ref/anttasks/Parametertask.html" >parameter</a></li><li id="xooki-history/trunk/ref/anttasks/Pathtask"><a href="../../history/trunk/ref/ant
 tasks/Pathtask.html" >path</a></li><li id="xooki-history/trunk/ref/anttasks/Property"><a href="../../history/trunk/ref/anttasks/Property.html" >property</a></li><li id="xooki-history/trunk/ref/anttasks/registerartifact"><a href="../../history/trunk/ref/anttasks/registerartifact.html" >registerartifact</a></li><li id="xooki-history/trunk/ref/anttasks/SubModuletask"><a href="../../history/trunk/ref/anttasks/SubModuletask.html" >submodule</a></li></ul></li><li id="xooki-history/trunk/ref/buildtypes/buildtypes"><a href="../../history/trunk/ref/buildtypes/buildtypes.html" >Build Types</a></li><li id="xooki-history/trunk/ref/plugins/plugins"><a href="../../history/trunk/ref/plugins/plugins.html" >Plugins</a></li><li id="xooki-history/trunk/ref/EasyAntconfigurationfile"><a href="../../history/trunk/ref/EasyAntconfigurationfile.html" >EasyAnt configuration file</a></li><li id="xooki-history/trunk/ref/ProjectIvyInstance"><a href="../../history/trunk/ref/ProjectIvyInstance.html" >Proj
 ect Ivy Instance</a></li></ul></li><li id="xooki-history/trunk/changelog" class="submenu"><a href="../../history/trunk/changelog.html" >Changelog</a><ul class="closed"><li id="xooki-history/trunk/changelog/0.7"><a href="../../history/trunk/changelog/0.7.html" >0.7</a></li></ul></li><li id="xooki-history/trunk/faq"><a href="../../history/trunk/faq.html" >FAQ</a></li><li id="xooki-history/trunk/contact"><a href="../../history/trunk/contact.html" >Contact</a></li></ul></li></ul></li><li id="xooki-contact" class="submenu"><a href="../../contact.html" >Get Involved</a><ul class="closed"><li id="xooki-Mailinglist"><a href="../../Mailinglist.html" >Mailing list</a></li><li id="xooki-Issuetracking"><a href="../../Issuetracking.html" >Issue tracking</a></li><li id="xooki-Sourcerepository"><a href="../../Sourcerepository.html" >Source repository</a></li><li id="xooki-irc"><a href="../../irc.html" >IRC</a></li></ul></li><li id="xooki-Team"><a href="../../Team.html" >Team</a></li><li id
 ="xooki-foundation" class="submenu"><a href="../../foundation.html" >Foundation</a><ul class="closed"><li id="xooki-undefined"><a href="http://www.apache.org" >ASF</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/sponsorship.html" >Sponsorship</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/thanks.html" >Thanks</a></li></ul></li></ul>
+        </div>
+    </div>
+
+    <div id="posts">
+        <br class="xooki-br"/><h1>Documentation</h1>
+Welcome to the official EasyAnt documentation.<br class="xooki-br"/><br class="xooki-br"/><h2>What is EasyAnt</h2>
+
+Easyant is a toolbox focusing on easing project build processes.<br class="xooki-br"/>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.<br class="xooki-br"/><br class="xooki-br"/>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://www.easyant.org/doc/">online version</a> for latest updates.<br class="xooki-br"/><br class="xooki-br"/>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.
+    </div>
+    <!-- end #posts -->
+    <!-- end #links -->
+    <div style="clear: both;">&nbsp;</div>
+</div>
+<!-- end #content -->
+<div id="footer">
+    <p id="legal">
+        <i>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>.</i><br>
+        <i>Apache EasyAnt, Apache Ivy, Apache Ant, Ivy, Ant, Apache, the Apache Ivy logo, the Apache Ant logo and the Apache feather logo are trademarks of The Apache Software Foundation.</i><br>
+        <i>All other marks mentioned may be trademarks or registered trademarks of their respective owners. </i>
+    </p>
+</div>
+<!-- end #footer -->
+</body>
+</html>

Propchange: incubator/easyant/site/staging/history/trunk/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/site/staging/history/trunk/index.html
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/site/staging/history/trunk/index.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html (added)
+++ incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,88 @@
+<!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>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 1};</script>   
+    
+
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <title>Default lifecycle</title>
+  <meta name="keywords" content="" />
+  <meta name="description" content="" />
+  <link rel="stylesheet" type="text/css" href="../../../style/style.css" media="screen"/>
+  <!-- for tree, see if it would better go in xooki.js -->
+  <link rel="stylesheet" type="text/css" href="../../../style/tree.css" />
+  <script src="../../../js/jquery.pack.js" type="text/javascript"></script>
+  <script src="../../../js/jquery.treeview.js" type="text/javascript"></script>
+  <script type="text/javascript">
+  $(document).ready(function(){$("#treemenu").Treeview({speed: "fast",store: true});});
+  </script>
+
+<script language="javascript" type="text/javascript">xooki = {u: function(url) {return "../../../xooki/"+url;}};</script>
+</head>
+<body>
+<div id="header">
+    <div id="incubatorlogo">
+	<img src="../../../images/apache-incubator-logo.png"/>
+    </div>    
+    <div id="topmenu">
+        <ul>
+            <li><a href="../../../index.html" id="topmenu1" accesskey="1" title="">Home</a></li>
+            <li><a href="../../../contact.html" id="topmenu2" accesskey="2" title="">Get involved</a></li>
+        </ul>
+    </div>
+</div>
+<!-- end #header -->
+<div id="menu">
+    <ul>
+        <li class="first"><a href="../../../index.html" accesskey="1" title="">Home</a></li>
+        <li><a href="../../../download.html" accesskey="1" title="">Download</a></li>
+        <li><a href="http://www.apache.org/licenses/" title="">License</a></li>
+        <li><a href="../../../history/trunk/tutorials.html" title="">Tutorials</a></li>
+        <li><a href="../../../history/trunk/reference.html" title="">References</a></li>
+    </ul>
+</div>
+<!-- end #menu -->
+<div id="content">
+    <div id="sidebar" class="boxed">
+        <h2 class="title">Apache EasyAnt&#153;</h2>
+        <div id="links">
+                <ul id="treemenu" class="treeview"><li id="xooki-index" class="submenu"><a href="../../../index.html" >Home</a><ul class="closed"><li id="xooki-features"><a href="../../../features.html" >Features</a></li><li id="xooki-license"><a href="http://www.apache.org/licenses/" >License</a></li><li id="xooki-faq"><a href="../../../faq.html" >FAQ</a></li></ul></li><li id="xooki-download"><a href="../../../download.html" >Download</a></li><li id="xooki-history" class="submenu">History<ul class="open"><li id="xooki-history/trunk/index" class="submenu"><a href="../../../history/trunk/index.html" >Trunk</a><ul class="open"><li id="xooki-history/trunk/tutorials" class="submenu"><a href="../../../history/trunk/tutorials.html" >Tutorials</a><ul class="closed"><li id="xooki-history/trunk/howto/GettingStarted"><a href="../../../history/trunk/howto/GettingStarted.html" >Getting Started</a></li><li id="xooki-history/trunk/howto/SettingupasimpleEasyAntproject"><a href="../../../hi
 story/trunk/howto/SettingupasimpleEasyAntproject.html" >Setting up a simple EasyAnt Project</a></li><li id="xooki-history/trunk/howto/writePlugins"><a href="../../../history/trunk/howto/writePlugins.html" >Writing plugins</a></li><li id="xooki-history/trunk/howto/skeleton"><a href="../../../history/trunk/howto/skeleton.html" >Working with skeletons of project</a></li><li id="xooki-history/trunk/howto/multimodules"><a href="../../../history/trunk/howto/multimodules.html" >Working with multi-modules</a></li><li id="xooki-history/trunk/howto/BuildConfigurations"><a href="../../../history/trunk/howto/BuildConfigurations.html" >Build configurations</a></li></ul></li><li id="xooki-history/trunk/reference" class="submenu"><a href="../../../history/trunk/reference.html" >Reference</a><ul class="open"><li id="xooki-history/trunk/ref/features"><a href="../../../history/trunk/ref/features.html" >Features</a></li><li id="xooki-history/trunk/ref/Defaultlifecycle"><a href="../../../histor
 y/trunk/ref/Defaultlifecycle.html" class="current">Default lifecycle</a></li><li id="xooki-history/trunk/ref/Directorystructure"><a href="../../../history/trunk/ref/Directorystructure.html" >Directory structure</a></li><li id="xooki-history/trunk/ref/Modulefiles"><a href="../../../history/trunk/ref/Modulefiles.html" >Module files</a></li><li id="xooki-history/trunk/ref/ProjectMancommand"><a href="../../../history/trunk/ref/ProjectMancommand.html" >ProjectMan commands</a></li><li id="xooki-history/trunk/ref/phases"><a href="../../../history/trunk/ref/phases.html" >Understanding phases</a></li><li id="xooki-history/trunk/ref/anttasks" class="submenu"><a href="../../../history/trunk/ref/anttasks.html" >Ant Tasks</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/BindTarget"><a href="../../../history/trunk/ref/anttasks/BindTarget.html" >bindtarget</a></li><li id="xooki-history/trunk/ref/anttasks/checkresolver"><a href="../../../history/trunk/ref/anttasks/checkresolve
 r.html" >checkresolver</a></li><li id="xooki-history/trunk/ref/anttasks/CoreVersiontask"><a href="../../../history/trunk/ref/anttasks/CoreVersiontask.html" >core-version</a></li><li id="xooki-history/trunk/ref/anttasks/easyant"><a href="../../../history/trunk/ref/anttasks/easyant.html" >easyant</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath" class="submenu"><a href="../../../history/trunk/ref/anttasks/findclasspath.html" >findclasspath</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy"><a href="../../../history/trunk/ref/anttasks/findclasspath/basic-configuration-strategy.html" >basic-configuration-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/environment-strategy"><a href="../../../history/trunk/ref/anttasks/findclasspath/environment-strategy.html" >environment-strategy</a></li><li id="xooki-history/trunk/ref/anttasks/findclasspath/project-dependency-strategy"><a href="../../..
 /history/trunk/ref/anttasks/findclasspath/project-dependency-strategy.html" >project-dependency-strategy</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/Importtask" class="submenu"><a href="../../../history/trunk/ref/anttasks/Importtask.html" >import</a><ul class="closed"><li id="xooki-history/trunk/ref/anttasks/plugintask"><a href="../../../history/trunk/ref/anttasks/plugintask.html" >plugin task</a></li><li id="xooki-history/trunk/ref/anttasks/buildtypetask"><a href="../../../history/trunk/ref/anttasks/buildtypetask.html" >buildtype task</a></li></ul></li><li id="xooki-history/trunk/ref/anttasks/menugenerator"><a href="../../../history/trunk/ref/anttasks/menugenerator.html" >menugenerator</a></li><li id="xooki-history/trunk/ref/anttasks/LoadModuletask"><a href="../../../history/trunk/ref/anttasks/LoadModuletask.html" >loadmodule</a></li><li id="xooki-history/trunk/ref/anttasks/Parametertask"><a href="../../../history/trunk/ref/anttasks/Parametertask.html" >param
 eter</a></li><li id="xooki-history/trunk/ref/anttasks/Pathtask"><a href="../../../history/trunk/ref/anttasks/Pathtask.html" >path</a></li><li id="xooki-history/trunk/ref/anttasks/Property"><a href="../../../history/trunk/ref/anttasks/Property.html" >property</a></li><li id="xooki-history/trunk/ref/anttasks/registerartifact"><a href="../../../history/trunk/ref/anttasks/registerartifact.html" >registerartifact</a></li><li id="xooki-history/trunk/ref/anttasks/SubModuletask"><a href="../../../history/trunk/ref/anttasks/SubModuletask.html" >submodule</a></li></ul></li><li id="xooki-history/trunk/ref/buildtypes/buildtypes"><a href="../../../history/trunk/ref/buildtypes/buildtypes.html" >Build Types</a></li><li id="xooki-history/trunk/ref/plugins/plugins"><a href="../../../history/trunk/ref/plugins/plugins.html" >Plugins</a></li><li id="xooki-history/trunk/ref/EasyAntconfigurationfile"><a href="../../../history/trunk/ref/EasyAntconfigurationfile.html" >EasyAnt configuration file</a
 ></li><li id="xooki-history/trunk/ref/ProjectIvyInstance"><a href="../../../history/trunk/ref/ProjectIvyInstance.html" >Project Ivy Instance</a></li></ul></li><li id="xooki-history/trunk/changelog" class="submenu"><a href="../../../history/trunk/changelog.html" >Changelog</a><ul class="closed"><li id="xooki-history/trunk/changelog/0.7"><a href="../../../history/trunk/changelog/0.7.html" >0.7</a></li></ul></li><li id="xooki-history/trunk/faq"><a href="../../../history/trunk/faq.html" >FAQ</a></li><li id="xooki-history/trunk/contact"><a href="../../../history/trunk/contact.html" >Contact</a></li></ul></li></ul></li><li id="xooki-contact" class="submenu"><a href="../../../contact.html" >Get Involved</a><ul class="closed"><li id="xooki-Mailinglist"><a href="../../../Mailinglist.html" >Mailing list</a></li><li id="xooki-Issuetracking"><a href="../../../Issuetracking.html" >Issue tracking</a></li><li id="xooki-Sourcerepository"><a href="../../../Sourcerepository.html" >Source repo
 sitory</a></li><li id="xooki-irc"><a href="../../../irc.html" >IRC</a></li></ul></li><li id="xooki-Team"><a href="../../../Team.html" >Team</a></li><li id="xooki-foundation" class="submenu"><a href="../../../foundation.html" >Foundation</a><ul class="closed"><li id="xooki-undefined"><a href="http://www.apache.org" >ASF</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/sponsorship.html" >Sponsorship</a></li><li id="xooki-undefined"><a href="http://www.apache.org/foundation/thanks.html" >Thanks</a></li></ul></li></ul>
+        </div>
+    </div>
+
+    <div id="posts">
+        <br class="xooki-br"/><h1>Default lifecycle</h1>
+EasyAnt cames with a default lifecycle. This default lifecycle is a set of predefined <a href="plugins/phases-std.html">phases</a> for the common needs.<br class="xooki-br"/>Each phase is considered as an essential step of the build process.<br class="xooki-br"/>Note : Even if EasyAnt provides you a default lifecycle we never lock you in. So you're able to add your own phases or to override existing ones.<br class="xooki-br"/><br class="xooki-br"/>Here is a graphical representation of the default lifecycle.<br class="xooki-br"/><br class="xooki-br"/><img src="../images/phases.jpg"/>
+    </div>
+    <!-- end #posts -->
+    <!-- end #links -->
+    <div style="clear: both;">&nbsp;</div>
+</div>
+<!-- end #content -->
+<div id="footer">
+    <p id="legal">
+        <i>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>.</i><br>
+        <i>Apache EasyAnt, Apache Ivy, Apache Ant, Ivy, Ant, Apache, the Apache Ivy logo, the Apache Ant logo and the Apache feather logo are trademarks of The Apache Software Foundation.</i><br>
+        <i>All other marks mentioned may be trademarks or registered trademarks of their respective owners. </i>
+    </p>
+</div>
+<!-- end #footer -->
+</body>
+</html>

Propchange: incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/site/staging/history/trunk/ref/Defaultlifecycle.html
------------------------------------------------------------------------------
    svn:mime-type = text/html