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 [3/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/BuildConfigurations.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/howto/BuildConfigurations.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/howto/BuildConfigurations.html (added)
+++ incubator/easyant/site/staging/history/trunk/howto/BuildConfigurations.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,162 @@
+<!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>Build configurations</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" >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" class="current">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>Build Configurations</h1>
+
+<h2>Concept</h2>
+Let us consider a few scenarios which make necessity for build configurations obvious. <br class="xooki-br"/><br class="xooki-br"/><i>Scenario I:</i><br class="xooki-br"/><p />
+Your build is a web application. You need a quick jetty-deploy available for convenient development. Conversely, you need a javadocs plugin in your release builds but, don't want them to interfere with your development environment.<br class="xooki-br"/><br class="xooki-br"/><p />
+<i>Scenario II:</i><br class="xooki-br"/><p />
+You need your build to shape up differently for Linux and Windows runtimes. Maybe, you want your Windows build to package a DLL or CAB file additionally.<br class="xooki-br"/><br class="xooki-br"/>Build configurations are a means provided to the authors of an EasyAnt build to create common usage-patterns and publish them through the familiar module.ivy. A user can then request a profile through a CLI. <br class="xooki-br"/><br class="xooki-br"/>Instead of being ultra-flexible in its outlook, EasyAnt still allows common and valuable patterns to be accommodated in the same build.<br class="xooki-br"/><br class="xooki-br"/><h2>Configuration Scope</h2>
+All build configurations in EasyAnt are scoped at the level of a <i>project</i>. However, the mechanism of specifying the configuration allows you configure along multiple aspects. For example, along use-cases (dev/production/test), along target platforms (windows/linux), etc.<br class="xooki-br"/><br class="xooki-br"/><h2>What aspects can one configure?</h2>
+
+You can associate the following things with a particular build configuration:<br class="xooki-br"/><ol>
+<li> Property values</li>
+<li> Dependencies</li>
+<li> Plugins</li>
+</ol>
+
+For example, you are allowed to specify property x is available for only configuration 'conf1' and not rest. Similarly, you may specify use the 'javadocs' plugin only for 'release' configuration, and not 'dev' configuration. And, this module depends on dependency d only for configuration 'windows'.<br class="xooki-br"/><br class="xooki-br"/><h2>What aspects can one configure?</h2>
+
+Configurations are entirely defined inside the familiar module.ivy specification. EasyAnt attempts to reuse and extend the meaning of the <conf> tag of Ivy.<br class="xooki-br"/><br class="xooki-br"/>A typical conf tag can be converted into a profile declaration if it contains <b>ea:type="profile"</b> attribute. This is an instruction to EasyAnt to treat this as a Profile/Configuration.<br class="xooki-br"/>
+<pre>
+&lt;conf name="myconf visibility="public" description="this configuration IS USED as a build configuration" ea:type="profile"/&gt;  
+</pre>
+
+The above statement declares a new build configuration called myconf.<br class="xooki-br"/><br class="xooki-br"/><h2>Attaching build elements to a configuration</h2>
+Now that we have declared a build configuration, how do we define it?<br />
+
+A build configuration is defined by attaching properties, plugins and dependencies to it.<br />
+
+Here is how you may attach properties to particular configurations:<br class="xooki-br"/><br class="xooki-br"/><br class="xooki-br"/>For example if you specify a property like :
+<pre>
+&lt;ea:build organisation="org.apache.easyant.buildtypes" module"build-std-java" revision="0.2"&gt;<br class="xooki-br"/>    &lt;ea:property name="foo" value="bar" conf="windows"/&gt;<br class="xooki-br"/>    &lt;ea:property name="foo" value="foobar" conf="linux"/&gt;<br class="xooki-br"/>    &lt;ea:property name="goo" value="bar" conf="windows, linux"/&gt;<br class="xooki-br"/>    &lt;ea:plugin module="myplugin" revision="0.1" conf="windows"/&gt;<br class="xooki-br"/>&lt;/ea:build&gt;
+</pre>
+As is self-evident, the property foo will assume different values for 'windows' and 'linux' configurations. On the otherhand, declaration of 'goo' attaches itself to both windows and linux profiles with the same value. Similarly, the plugin myplugin gets attached to the 'windows' configuration only but, is not available in the linux configuration.<br class="xooki-br"/><br class="xooki-br"/><h2>Activating a Configuration</h2>
+
+Build configurations in EasyAnt are activated through Command Line in two ways:<br class="xooki-br"/>
+<pre>
+&gt; easyant -buildconf myconfiguration
+</pre>
+Or alternatively :
+<pre>
+&gt; easyant -C myconfiguration
+</pre>
+
+Any of the above commands would trigger the build process using myconfiguration build configuration.<br class="xooki-br"/><br class="xooki-br"/><h2>A Practical Use Case</h2>
+This section tries to illustrate the technical details of Build Configurations. We will try to setup a web application build and then configure it for three different target environments, viz. Release, Testing and Development.<br class="xooki-br"/><p />
+Of these, release and testing configurations require to publish coverage reports. The development configuration focuses on making developers life easy. So, it needs a quick jetty deploy functionality available in the build.<br class="xooki-br"/><p />
+Let us try to set up a simply EasyAnt build with the above intention in mind.<br class="xooki-br"/><p />
+Example:
+<pre>
+&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 indicates that the dependency is not required for normal <br class="xooki-br"/>        use of the application, and is only available for the test compilation and execution phases."/&gt;<br class="xooki-br"/>    &lt;conf name="release" visibility="public" ea:type="profile" description="Declares a build configuration for release builds"/&gt;<br class="xooki-br"/>    &lt;conf name="testing" visibility="public" ea:type="profile" description="Declares a build configuration for testing builds"/&gt;<br class="xooki-br"/>    &lt;conf name="dev" visibility="public" ea:type="profile" description="Declares a build configuration for dev builds"/&gt;<br class="xooki-br"/>&lt;/configurations&gt;
+</pre>
+The above module.ivy snippet declares the three build configurations, viz. 'release', 'testing' and 'dev'. Now, we need to attach our requirement dependencies to each of these configurations.<br class="xooki-br"/><p />
+So, we modify our <ea:build> tag as:
+<pre>
+&lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-webapp-java" revision="0.1"&gt;<br class="xooki-br"/>    &lt;ea:property name="test.framework" value="testng"/&gt;<br class="xooki-br"/>    &lt;ea:property name="run.main.classname" value="org.apache.easyant.example.Example" conf="dev"/&gt;<br class="xooki-br"/>    &lt;ea:plugin module="jetty-deploy" revision="0.1" as="jetty" conf="dev"/&gt;<br class="xooki-br"/>    &lt;ea:plugin module="run-java revision="0.1" as="run-java" conf="dev"/&gt;<br class="xooki-br"/>    &lt;ea:plugin module="emma" revision="0.1" as="emma" conf="release,testing"/&gt;<br class="xooki-br"/>&lt;/ea:build&gt;
+</pre>
+In the above snippet, jetty-deploy, run-java and emma plugins have been declared and attached to different build configurations. <br class="xooki-br"/><p />
+While jetty-deploy and run-java plugins have been attached to dev configuration, the emma plugin has been attached to both testing and release configurations. The jetty-deploy plugin allows a quick deployment of the webapp build on a jetty server. The run-java plugin allows you to execute any java class. Let us assume our dev environment requires us to execute a java class. So we include this dependency to our dev environment. Further, the run-java plugin requires the class name to be executed through the property run.main.classname. So, we additionally define this property and attach it to the dev configuration as well.<br class="xooki-br"/><p />
+On the other hand, for our release builds, generation of coverage reports is a process requirement. And in testing, coverage reports are an obvious requirement. So we attach the emma plugin to both these configurations. <br class="xooki-br"/><p />
+So, this is how our final module.ivy looks:
+<pre>
+&lt;ivy-module version="2.0" xmlns:e="<a href="http://ant.apache.org/ivy/extra">http://ant.apache.org/ivy/extra</a>"<br class="xooki-br"/>    xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"&gt;<br class="xooki-br"/>    &lt;info organisation="org.apache.easyant" module="webapp-java"<br class="xooki-br"/>        status="integration"&gt;<br class="xooki-br"/>        &lt;description&gt;<br class="xooki-br"/>            This project is a sample of a java webapplication making<br class="xooki-br"/>            use of build configurations<br class="xooki-br"/>        &lt;/description&gt;<br class="xooki-br"/>        &lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-webapp-java" revision="0.1"&gt;<br class="xooki-br"/>            &lt;ea:property name="test.framework" value="testng" /&gt;<br class="xooki-br"/>            &lt;ea:property name="run.main.classname" value="org.apache.easyant.example.Example"<br class="xooki-br"/>               
  conf="dev" /&gt;<br class="xooki-br"/>            &lt;ea:plugin module="jetty-deploy" revision="0.1"<br class="xooki-br"/>                as="jetty" conf="dev" /&gt;<br class="xooki-br"/>            &lt;ea:plugin module="run-java" revision="0.1"<br class="xooki-br"/>                as="run-java" conf="dev" /&gt;<br class="xooki-br"/>            &lt;ea:plugin module="emma" revision="0.1" as="emma"<br class="xooki-br"/>                conf="release,testing" /&gt;<br class="xooki-br"/>        &lt;/ea:build&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"<br class="xooki-br"/>            description="runtime dependencies and master artifact can be used with this conf" /&gt;<br class="xooki-br"/>        &lt;conf name="test" visibility="private"<br class="xooki-br"/>            description="this scope indicates that the dependency is not required for normal <br class
 ="xooki-br"/>            use of the application, and is only available for the test compilation and execution phases." /&gt;<br class="xooki-br"/>        &lt;conf name="release" visibility="public" ea:type="profile"<br class="xooki-br"/>            description="Declares a build configuration for official builds" /&gt;<br class="xooki-br"/>        &lt;conf name="testing" visibility="public" ea:type="profile"<br class="xooki-br"/>            description="Declares a build configuration for testing builds" /&gt;<br class="xooki-br"/>        &lt;conf name="dev" visibility="public" ea:type="profile"<br class="xooki-br"/>            description="Declares a build configuration for dev builds" /&gt;<br class="xooki-br"/>    &lt;/configurations&gt;<br class="xooki-br"/>    &lt;publications&gt;<br class="xooki-br"/>        &lt;artifact type="war" /&gt;<br class="xooki-br"/>        &lt;artifact e:classifier="source" /&gt;<br class="xooki-br"/>    &lt;/publications&gt;<br class="xooki-br
 "/>    &lt;dependencies&gt;<br class="xooki-br"/>        &lt;dependency org="org.testng" name="testng" rev="5.7"<br class="xooki-br"/>            conf="test-&gt;master"&gt;<br class="xooki-br"/>            &lt;artifact name="testng" type="jar" e:classifier="jdk15" /&gt;<br class="xooki-br"/>        &lt;/dependency&gt;<br class="xooki-br"/>    &lt;/dependencies&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+
+<h2>Running different configurations/profiles</h2>
+
+With the above module.ivy, you can go ahead and run the build against any of the configuration. For example, if you are a developer, trying to deploy and test your changes on jetty, you would like to run:
+<pre>
+&gt; easyant -C dev jetty:run<br class="xooki-br"/>&gt; easyant -C dev run-java:run
+</pre>
+The first command will build and package your app, and deploy it on a jetty instance. The second will run the ${run.main.classname} class in a new JVM.<br class="xooki-br"/><p />
+Or, try out this -
+<pre>
+&gt; easyant -C testing emma:emma<br class="xooki-br"/>&gt; easyant -C release emma:emma
+</pre>
+
+This would generate a emma coverage report for your project.
+    </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/BuildConfigurations.html
------------------------------------------------------------------------------
    svn:eol-style = native

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

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

Added: incubator/easyant/site/staging/history/trunk/howto/GettingStarted.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/howto/GettingStarted.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/howto/GettingStarted.html (added)
+++ incubator/easyant/site/staging/history/trunk/howto/GettingStarted.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,151 @@
+<!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>Getting Started</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" class="current">Getting Started</a></li><li id="xooki-history/trunk/howto/SettingupasimpleEasyAntproject"><a href
 ="../../../history/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="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>Getting Started</h1>
+<p />
+Here is a Quick Start tutorial to undestand how to use EasyAnt in your project.<br class="xooki-br"/><br class="xooki-br"/><h2>The Command Line</h2><p />
+<h3>Running default target</h3>
+Running easyant without arguments will execute the default target of a project.<br class="xooki-br"/>Example : 
+<pre>
+&gt; easyant
+</pre>
+
+<h3>Running a specific phase</h3>
+Running EasyAnt with a phase name will execute ALL the targets bound to this phase.<br class="xooki-br"/>Example:
+<pre>
+&gt; easyant package
+</pre>
+All targets related to the package phase will be executed. <br class="xooki-br"/>Supposing your build is composed of several modules that generate packages (jar + source.jar + documentation.jar). All such packages will be generated.<br class="xooki-br"/>If your need is just to create the first jar, maybe you should call the explicit target instead.<br class="xooki-br"/><br class="xooki-br"/><h3>Running a specific target</h3>
+Running EasyAnt with a target name or a list of names will execute only the specified targets.<br class="xooki-br"/>Example:
+<pre>
+&gt; easyant jar:jar
+</pre>
+
+<h3>Displaying project help</h3>
+Running EasyAnt with "-p" argument will display a project help (ie. show all phases / target available)<br class="xooki-br"/>Example:
+<pre>
+&gt; easyant -p
+</pre>
+
+A project using EasyAnt MUST contain a file named module.ivy and an optional file named module.ant.<br class="xooki-br"/><br class="xooki-br"/><h2>The module.ivy file</h2>
+<p />
+This file is the module descriptor of your project. <br class="xooki-br"/>It contains information like your company name, the module name, dependencies, and Easyant build information.<br class="xooki-br"/><br class="xooki-br"/><h3>A short example</h3>
+<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="myJavaApp" 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 indicates<br class="xooki-br"/> that the dependency is not required for normal use of the application, and is <br class="xooki-br"/>only available for the test compilation and execution phases."/&gt;<br class="xooki-br"/>  &lt;/configurations&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+In this module descriptor, we have an application named myJavaApp created by org.mycompany.<br class="xooki-br"/>To use easyant you must declare the easyant namespace 
+<pre>
+xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"
+</pre>
+Pay attention to the <b>ea:build</b> tag.<br class="xooki-br"/>This tags define which build-type is used for your project. In this example we use <b>build-std-java</b> which provides all the targets necessary to compile / package a standard java application.
+<div id="note">Note: The organisation argument in <b>ea:build</b> tag is optional. If not specified easyant will use the default one (org.apache.easyant.buildtypes).</div>
+
+Running easyant with this example will run the default target (package).<br class="xooki-br"/>A few seconds later, you will have the generated jar in your_project/target/artifacts/myJavaApp.jar.<br class="xooki-br"/><br class="xooki-br"/><h3>Changing build-system properties</h3>
+So now we want to change several things on this build system.<br class="xooki-br"/>For example, we want to use the "run:run" feature that allows a user to compile/start a standard java application (ie. a project with a main class).<br class="xooki-br"/>And we want to have the generated jar in "dist" directory instead of "targets/artifacts".<br class="xooki-br"/>We will add additional informations inside <easyant> tag.
+<pre>
+&lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.2"/&gt;<br class="xooki-br"/> &lt;ea:property name="target.artifacts" value="dist"/&gt;<br class="xooki-br"/>&lt;/ea:build&gt;
+</pre>
+Running "easyant" will generate the output jar in "dist" directory.<br class="xooki-br"/><br class="xooki-br"/><h3>Using additional plugins</h3>
+In some cases, we want to use several features that are not included in the default build-type provided by easyant.<br class="xooki-br"/>If your project needs to use a specific plugin, you can use the <ea:plugin> tag inside <ea:build> tag.<br class="xooki-br"/>Example: <br class="xooki-br"/>Suppose we want to use code coverage feature.
+<pre>
+&lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.2"/&gt;<br class="xooki-br"/> &lt;ea:property name="target.artifacts" value="dist"/&gt;<br class="xooki-br"/> &lt;ea:plugin org="org.apache.easyant.plugins" module="emma" revision="0.1"/&gt;<br class="xooki-br"/>&lt;/ea:build&gt;
+</pre>
+Calling to "easyant -p" we should see the emma public target :
+<pre>
+org.apache.easyant.plugins#emma.:emma     generate emma covera report
+</pre>
+As you can see the target is prefixed by the project name.<br class="xooki-br"/>Most of the time the project name is quite long so easyant allows you to define aliases for the project names. Such an alias can be used in place of the complete project name. You can define an alias for a plugin using "as" argument as below.
+<pre>
+&lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.2"/&gt;<br class="xooki-br"/> &lt;ea:property name="target.artifacts" value="dist"/&gt;<br class="xooki-br"/> &lt;ea:plugin org="org.apache.easyant.plugins" module="emma" revision="0.1" as="emma"/&gt;<br class="xooki-br"/>&lt;/ea:build&gt;
+</pre>
+Calling to "easyant -p" we should see the emma public target :
+<pre>
+emma:emma generate emma covera report
+</pre>
+<div id="note">Note: The organisation argument in <b>ea:plugin</b> tag is optional. If not specified easyant will use the default one (org.apache.easyant.plugins).</div>
+
+<h3>Going further ?</h3>
+If you want more information we strongly recommend you to read the <a href="../ref/Modulefiles.html">Module files documentation</a>
+    </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/GettingStarted.html
------------------------------------------------------------------------------
    svn:eol-style = native

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

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

Added: incubator/easyant/site/staging/history/trunk/howto/SettingupasimpleEasyAntproject.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/howto/SettingupasimpleEasyAntproject.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/howto/SettingupasimpleEasyAntproject.html (added)
+++ incubator/easyant/site/staging/history/trunk/howto/SettingupasimpleEasyAntproject.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,144 @@
+<!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>Setting up a simple EasyAnt 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" class="current">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/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>Setting up a simple EasyAnt project</h1>
+<p />
+In the course of this write up, you will be taken through basics of EasyAnt and a simple-and-live example of setting up an EasyAnt web application project as an example only.<br class="xooki-br"/><p />
+Prerequisite to your setting up an Easyant project means you have to have the Easyant environment correctly configured.<br class="xooki-br"/><p />
+You need to set up EASYANT_HOME property. Point it to your EasyAnt path. For Windows users, do:
+<pre>
+&gt; set EASYANT_HOME=c:\path\to\easyant
+</pre>
+For Unix,
+<pre>
+&gt; export EASYANT_HOME=/path/to/easyant
+</pre>
+<p />
+Then add %EASYANT_HOME%/bin to your PATH variable.<br class="xooki-br"/><p />
+Let us try to setup a project that builds to a Web Application Archive, or a WAR. Say, PROJECT_ROOT is the root directory for your project.<br class="xooki-br"/><p />
+<h3>Module IVY</h3>
+<p />
+Your project is expected to have a module.ivy to define the build of your project. This is <i>nearly</i> a regular IVY specification file.<br class="xooki-br"/><p />
+<pre>
+&lt;ivy-module version="2.0" xmlns:e="<a href="http://ant.apache.org/ivy/extra">http://ant.apache.org/ivy/extra</a>" xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"&gt;<br class="xooki-br"/>    &lt;info organisation="my.easyant.project" module="my-webapp" status="integration" &gt;<br class="xooki-br"/>        &lt;description&gt;<br class="xooki-br"/>            This project is a sample of a java webapplication<br class="xooki-br"/>        &lt;/description&gt;<br class="xooki-br"/>        &lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-webapp-java" revision="0.1"&gt;<br class="xooki-br"/>            &lt;ea:property name="test.framework" value="testng"/&gt;<br class="xooki-br"/>        &lt;/ea:build&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"/&gt;<br class="xooki-br"/>        &lt;conf name="test" visibility="priv
 ate"/&gt;<br class="xooki-br"/>    &lt;/configurations&gt;<br class="xooki-br"/>    &lt;publications&gt;<br class="xooki-br"/>        &lt;artifact type="war"/&gt;<br class="xooki-br"/>        &lt;artifact e:classifier="source"/&gt;<br class="xooki-br"/>    &lt;/publications&gt;<br class="xooki-br"/>    &lt;dependencies&gt;<br class="xooki-br"/>        &lt;dependency org="org.testng" name="testng" rev="5.7" conf="test-&gt;master"&gt;<br class="xooki-br"/>            &lt;artifact name="testng" type="jar" e:classifier="jdk15"/&gt;<br class="xooki-br"/>        &lt;/dependency&gt;<br class="xooki-br"/>    &lt;/dependencies&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;<br class="xooki-br"/>
+</pre>
+<p />
+The above is a standard ivy specification file, other than the 'ea:build' tag. Note also the use of the 'ea' namespace. The type attribute takes the build type the project wants to use. In our case, we intend to set up a standard WAR build project. The type attribute has a pattern - repository#artifact;version.<br class="xooki-br"/><p />
+The above file is a sufficient instruction to easyant to build a WAR using the current project. Only, you need to mind the source structure for this build to work.<br class="xooki-br"/><p />
+<h3>Source Structure</h3>
+<p />
+Similar, to Maven, by default, if you are using a standard build type, you need to follow a standard directory structure. This should be as the build type expects to pick different resources to be present in different directories. Use the following:<br class="xooki-br"/><p />
+<img src="../images/java-webapp-src-structure.gif" />
+<p />
+In the above directory structure, all your java sources should go into src/main/java directory. Create a DummyMain.java file inside src/java/my/test directory.<br class="xooki-br"/><p />
+All resources that should move into WEB-INF/classes directory should go inside src/main/resources.<br class="xooki-br"/><p />
+Entire src/main/webapp directory moves into the root of the web application WAR. For instance, you may keep WEB-INF directory inside this directory.<br class="xooki-br"/><p />
+The module.ivy file should reside inside 'testproj' directory.<br class="xooki-br"/><p />
+Any external dependencies of your project should be specified inside your module.ivy file, dependencies section.<br class="xooki-br"/><h3>Building the Project</h3>
+<p />
+The project is now ready to be built. You can simply run: easyant. You should see a 'target' directory created in your project root. The built war will reside inside the target/artifacts directory.<br class="xooki-br"/><p />
+You can go ahead and deploy it in your app-server.<br class="xooki-br"/><h3>Build Plugins</h3>
+<p />
+EasyAnt provides plugins that you can selectively choose to use in your project. These provide you convenience functionalities. E.g. Quick WAR deployments in Jetty, Xooki documentation, Coverage tools etc.<br class="xooki-br"/><p />
+In this tutorial, let us quickly take a look over how we may integrate Jetty with our current war.<br class="xooki-br"/><p />
+Let us first include a 'Hello World' index.htm inside the src/main/webapp directory. These are the contents of our index.htm:<br class="xooki-br"/><p />
+<pre>
+&lt;html&gt;<br class="xooki-br"/>    &lt;head&gt;&lt;/head&gt;<br class="xooki-br"/>    &lt;body&gt;<br class="xooki-br"/>        &lt;h3&gt;Hello World !!&lt;/h3&gt;<br class="xooki-br"/>    &lt;/body&gt;<br class="xooki-br"/>&lt;/html&gt;
+</pre>
+<p />
+Our module.ivy is the repository of all plugins that our project uses. So, we go ahead and include the Jetty plugin in our module.ivy.<br class="xooki-br"/><p />
+<pre>
+&lt;ivy-module version="2.0" xmlns:e="<a href="http://ant.apache.org/ivy/extra">http://ant.apache.org/ivy/extra</a>" xmlns:ea="<a href="http://www.easyant.org">http://www.easyant.org</a>"&gt;<br class="xooki-br"/>    &lt;info organisation="my.easyant.project" module="my-webapp" status="integration" &gt;<br class="xooki-br"/>        &lt;description&gt;<br class="xooki-br"/>            This project is a sample of a java webapplication<br class="xooki-br"/>        &lt;/description&gt;<br class="xooki-br"/>        &lt;ea:build organisation="org.apache.easyant.buildtypes" module="build-webapp-java" revision="0.1"&gt;<br class="xooki-br"/>            &lt;ea:property name="test.framework" value="testng"/&gt;<br class="xooki-br"/>            &lt;ea:plugin organisation="org.apache.easyant.plugins" module="jetty-deploy" revision="0.1" as="jetty"/&gt;<br class="xooki-br"/>        &lt;/ea:build&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"/&gt;<br class="xooki-br"/>        &lt;conf name="test" visibility="private"/&gt;<br class="xooki-br"/>    &lt;/configurations&gt;<br class="xooki-br"/>    &lt;publications&gt;<br class="xooki-br"/>        &lt;artifact type="war"/&gt;<br class="xooki-br"/>        &lt;artifact e:classifier="source"/&gt;<br class="xooki-br"/>    &lt;/publications&gt;<br class="xooki-br"/>    &lt;dependencies&gt;<br class="xooki-br"/>        &lt;dependency org="org.testng" name="testng" rev="5.7" conf="test-&gt;master"&gt;<br class="xooki-br"/>            &lt;artifact name="testng" type="jar" e:classifier="jdk15"/&gt;<br class="xooki-br"/>        &lt;/dependency&gt;<br class="xooki-br"/>    &lt;/dependencies&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+<p />
+Note the addition of the <b>ea:plugin</b> tag.<br class="xooki-br"/><p />
+The above line instructs easyant to make the jetty-deploy plugin artifact inside the 'org.apache.easyant.plugins' repository, version 0.1, to be available in the current project.<br class="xooki-br"/><p />
+The jetty-deploy module exposes a target called ':run' (by convention all public targets in EasyAnt start with a ':' and all private targets start with a '-'). Further, this target depends on the package phase of EasyAnt, which means that by the time this target is executed, the WAR would have been created and available for deployment on Jetty.<br class="xooki-br"/><p />
+Because, in the new line added to module.ivy, the jetty-deploy module was added with an 'alias' jetty, you can run 'easyant jetty:run' to build and package your web application, and deploy it on jetty. The command launches jetty, and keeps displaying Jetty logs on console. You can now access your web application on browser. Try hitting <a href="http://localhost:8080">http://localhost:8080</a> !<br class="xooki-br"/><p />
+<h3>module.ant</h3>
+<p />
+If you want to add something to the default build types that come packaged with EasyAnt, you can write a module.ant file in your project root. This is called before EasyAnt executes any of its core build scripts.<br class="xooki-br"/><p />
+You can also include any convenience targets you find useful, that are specific to your project and do not come included in EasyAnt. 
+    </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/SettingupasimpleEasyAntproject.html
------------------------------------------------------------------------------
    svn:eol-style = native

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

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

Added: incubator/easyant/site/staging/history/trunk/howto/multimodules.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/staging/history/trunk/howto/multimodules.html?rev=1081393&view=auto
==============================================================================
--- incubator/easyant/site/staging/history/trunk/howto/multimodules.html (added)
+++ incubator/easyant/site/staging/history/trunk/howto/multimodules.html Mon Mar 14 14:29:00 2011
@@ -0,0 +1,176 @@
+<!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 multi-modules</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" >Working with skeletons of project</a></li><li id="xooki-history/trunk/howto/multimodules"><a href="../../../history/trunk/howto/multimodules.html" class="current">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 multi-modules</h1>
+
+<p>A "multi-module" project involves more than one subcomponent, with possible dependencies between components.  For example, one project may build three separate jar files, and then a single war with all of these jars copied into its WEB-INF/lib folder.</p>
+
+<p>EasyAnt provides strong support for multi-module projects:<br class="xooki-br"/>
+<ul>
+  <li>The <a href="../ref/buildtypes/meta-build.html">meta-build</a> build type provides build orchestration (automatically orders the module build according to dependencies).</li>
+  <li>Optional <a href="#module-inheritance">module inheritance</a> allows modules in the same project to share configuration settings.</li>
+  <li>Optional <a href="#packaging">top-level build script</a> allows extra packaging logic to run at the end of your multi-module build.</li>
+</ul>
+
+<p>The EasyAnt distribution includes a complete two-module example project, found in the [EASYANT_HOME]/example/example-multimodule directory.</p>
+
+<h2>Project Setup</h2>
+
+<p>Setting up a multi-module project is practically the same as setting up several single-module projects:<br class="xooki-br"/><ol>
+  <li>Add a module.ivy to the project root directory to orchestrate the build.</li>
+  <li>Set up each submodule in its own subdirectory with its own module.ivy file.</li>
+  <li>Declare dependencies on other submodules in each module.ivy as you need them.</li>
+</ol>
+
+<h3>Project module.ivy</h3>
+
+<p>The project-level module.ivy uses the <a href="../ref/buildtypes/meta-build.html">meta-build</a> build type.  This build type implements build orchestration:  all submodules are analyzed to determine the required build order, and then each module is built.  Simple modules are built first, and then more complex modules that depend on them are built.</p>
+
+<h4>Example</h4>
+<p>For example, you have an application with two modules.  One module is the main application, which depends on a core "API" module.  You want to build those two projects in the right order.  The simplest parent module.ivy file will look like this:<br class="xooki-br"/>
+<pre>
+&lt;ivy-module version="2.0"&gt;<br class="xooki-br"/>    &lt;info organisation="org.apache.easyant" module="example-multimodule" status="integration"&gt;<br class="xooki-br"/>        &lt;ea:build module="meta-build" revision="0.2"/&gt;<br class="xooki-br"/>    &lt;/info&gt;<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre>
+</p>
+
+<h3>Submodule module.ivy</h3>
+<p>Set up the module.ivy in each submodule as you would any other project; see <a href="GettingStarted.html">Getting Started</a> for an overview.  Often submodules belonging to the same project will have very similar Ivy files, with common dependencies and <a href="BuildConfigurations.html">build configurations</a>.  EasyAnt provides a <i>module inheritance</i> feature that allows you to put features shared by all of your modules in the project Ivy file.</p>
+
+<a name="module-inheritance"></a><h4>Module inheritance</h4>
+<p>Module inheritence is based on an ivy issue that is still opened, <a href="https://issues.apache.org/jira/browse/IVY-742">https://issues.apache.org/jira/browse/IVY-742</a>.  We've made a small patch as a POC that allow you to extends ivy files:
+<pre>
+&lt;extends organisation="foobar" module="child" revision="latest.integration" location="../module.ivy" extendType="configurations,dependencies"/&gt;
+</pre>
+</p>
+
+<p>We've defined two optional attributes, "location" and "extendType".  Location defines the filesystem location of the parent desriptor relative to the submodule descriptor.  If the parent descriptor doesn't exist there, Ivy will search for it in the Ivy repository.  If unspecified, the default in EasyAnt is "../module.ivy".</p>
+<p>The extendType attribute defines which parts of the parent descriptor to import.  The default value is "all".  Possible values for extendType:
+<ul>
+  <li>all</li>
+  <li>configurations</li>
+  <li>dependencies</li>
+  <li>description</li>
+</ul>
+</p>
+
+<h4>Example</h4>
+<p>
+<pre>
+&lt;ivy-module version="2.0"&gt;<br class="xooki-br"/>    &lt;info organisation="org.apache.easyant" module="example-submodule" status="integration" &gt;<br class="xooki-br"/>        &lt;extends organisation="org.apache.easyant" name="example-parent" revision="latest.integration" /&gt;<br class="xooki-br"/>        &lt;ea:build module="build-webapp-java" revision="0.1"&gt;<br class="xooki-br"/>          &lt;property name="test.framework" value="testng"/&gt;<br class="xooki-br"/>        &lt;/ea:build&gt;<br class="xooki-br"/>    &lt;/info&gt;<br class="xooki-br"/>    ...<br class="xooki-br"/>&lt;/ivy-module&gt;
+</pre></p>
+<p>In this file we say that "example-submodule" wants to inherit of ALL (configurations/dependencies/ easyant properties /easyant plugins ) that are defined in "example-parent".  So our submodule Ivy file defines what is unique about this module, but shares build configurations and property settings common to all modules in the parent project.</p>
+
+<h3>Dependencies between submodules</h3>
+
+<p>Dependencies between submodules are declared just like any other dependency in your module.ivy file.  You will usually want to declare the dependency as revision="latest.integration", so that the latest build is always used.</p>
+
+<h2>Building</h2>
+
+<p>Building a multi-module project is the same as building a single-module project:  type "easyant [target]", where [target] is a build phase or target that you want to execute.  [target] is then executed on all of your sub-modules, ordered so that dependencies are built before the modules that need them.  Type easyant -p from the project root directory to see a full list of available build targets.  The following phases are typical of any easyant build:
+<ul>
+  <li><pre>&gt; easyant clean</pre> execute the <a href="plugins/phases-std.html">clean phase</a> of the build on each submodule.  This deletes any artifacts produced by prior builds.</li>
+  <li><pre>&gt; easyant verify</pre> compile and test all modules</li>
+  <li><pre>&gt; easyant package</pre> package all modules for distribution</li>
+  <li><pre>&gt; easyant publish-local</pre> publish all project modules to your workstation Ivy repository.</li>
+  <li><pre>&gt; easyant publish-shared</pre> publish all project modules to your shared Ivy repository.</li>
+</ul>
+
+<h4>Build artifacts</h4>
+
+<p>Build reports for each submodule are created in that module's own target directory.  During a normal build (like "easyant verify"), artifacts from each submodule will be published into a private "build-scoped" Ivy repository in the project root directory.  The default build-scoped repository is in [PROJECT DIR]/target/repository.</p>
+
+<p>When publishing a snapshot / release to a local repo (using publish-local) or shared repo (using publish-shared), the "build" scoped repository is ignored.</p>
+
+<a name="packaging"></a><h2>Multi-module Packaging</h2>
+
+<p>So you have a complex project with many sub-modules, and you use meta-build to generate all of them.  At the end of your build you probably want to gather your various modules and put them together into one big distribution archive.</p>
+
+<p>The easiest way to do this is with a <pre>module.ant</pre> file in the project root directory.  Any targets in this file will be run after all of the sub-module builds are finished.  For example, this module.ant could be used with our example-multimodule project to build a tar.gz file at the end of the package phase:
+<pre>
+&lt;project name="org.apache.easyant#example-multimodule" xmlns:ea="antlib:org.apache.easyant"&gt;<br class="xooki-br"/><br class="xooki-br"/>    &lt;property name="target.dir" location="target/release"/&gt;<br class="xooki-br"/>    &lt;ea:import mrid="org.apache.easyant.buildtypes#meta-build;0.2"/&gt;<br class="xooki-br"/>    <br class="xooki-br"/>    &lt;target name="build-distribution" phase="package" description="gather the submodules into one archive"&gt;<br class="xooki-br"/>        &lt;mkdir dir="${target.dir}"/&gt;<br class="xooki-br"/>        &lt;tar destfile="${target.dir}/distribution.tar.gz" compression="gzip"&gt;<br class="xooki-br"/>            &lt;tarfileset prefix="lib" dir="example-core/target/artifacts" includes="*.jar"/&gt;<br class="xooki-br"/>            &lt;tarfileset prefix="lib" dir="example-hello-world/target/artifacts" includes="*.jar"/&gt;<br class="xooki-br"/>        &lt;/tar&gt;<br class="xooki-br"/>    &lt;/target&gt;<br class="xooki-br"/><br cl
 ass="xooki-br"/>&lt;/project&gt;
+</pre>
+</p>
+
+    </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/multimodules.html
------------------------------------------------------------------------------
    svn:eol-style = native

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

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