You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by xa...@apache.org on 2006/12/18 17:06:13 UTC

svn commit: r488342 [6/9] - in /incubator/ivy/trunk/src/doc/xooki: ./ doc/ doc/conf/ doc/configuration/ doc/configuration/macrodef/ doc/configuration/namespace/ doc/ivyfile/ doc/releasenotes/ doc/resolver/ doc/tutorial/ doc/tutorial/build-repository/ d...

Added: incubator/ivy/trunk/src/doc/xooki/doc/tutorial/dual.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/tutorial/dual.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/tutorial/dual.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/tutorial/dual.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+This tutorial presents the use of the DualResolver, a feature introduced in the version 0.6 of Ivy.
+
+Dual Resolver is used when ivy files can be found in a repository while artifacts are in another. It is especially useful to use full power of ivy (including transitive dependencies) with the ibiblio repository for artifacts. The problem with the maven ibiblio repository is that it does not contain ivy files. Since transitive dependencies are based upon ivy files, using the ibiblio resolver does not permit to use transitive dependencies.
+
+The solution to this problem is to store your own repository only for ivy files, and use ibiblio for artifacts. That's what is done in this tutorial.
+
+<h1>project description</h1>
+Let's have a look at the src/example/dual directory in your ivy distribution.
+It contains a build file and 3 directories:
+<ul>
+<li>config: contains the ivy configuration file</li>
+<li>repository: a sample repository of ivy files</li>
+<li>project: the project making use of ivy with dual resolver</li>
+</ul>
+
+<h2>the dual project</h2>
+The project is very simple and contains only one test class : example.Hello
+It depends on two libraries: apache commons-lang and apache commons-httpclient.
+
+Here is the content of the project :
+<ul>
+  <li>build.xml : the ant build file for the project</li>
+  <li>ivy.xml : the ivy project file</li>
+  <li>src\example\Hello.java : the only class of the project</li>
+</ul>
+Take a look at it's <b>ivy.xml</b> file:
+<code>
+<ivy-module version="1.0">
+    <info organisation="jayasoft" module="hello-ivy" />
+    <dependencies>
+        <dependency org="apache" name="commons-httpclient" rev="2.0.2" />
+        <dependency org="apache" name="commons-lang" rev="2.0" />
+    </dependencies>
+</ivy-module>
+</code>
+
+As you can see, nothing special here... Indeed, it's the philosophy of ivy to keep ivy files independent of the way dependencies are retrieved.
+
+<h2>the <b>ivy</b> configuration</h2>
+The ivy configuration is made in the config directory it contains only one file: ivyconf.xml.
+
+Let's analyse it.
+<code>
+<ivyconf>
+  <conf defaultResolver="dual-example" />
+  <resolvers>
+    <dual name="dual-example">
+      <filesystem name="ivys">
+        <ivy pattern="${ivy.conf.dir}/../repository/[module]-ivy-[revision].xml" />
+      </filesystem>
+      <ibiblio name="ibiblio" />
+    </dual>
+  </resolvers>
+</ivyconf>
+</code>
+
+Here we configure one resolver, the default one, which is a dual resolver. This dual resolver has two sub resolvers : the first is what is called the "ivy" resolver of the dual resolver, and the second one is what is called the "artifact" resolver. It is important that the dual resolver exactly has two sub resolvers in this given order.
+The ivy resolver, here a filesystem one, is used only to find ivy files. The configuration given in this resolver
+says that all ivy files are in the same directory, named like that: [module]-ivy-[revision].xml. If we check the repository directory, we can confirm that it contains a file named commons-httpclient-ivy-2.0.2.xml. It fulfills the given pattern and will thus be find by this resolver.
+The artifact resolver is simply an ibiblio one, and will thus try to find required artifacts in the maven ibiblio repository.
+
+<h1>walkthrough</h1>
+<div class="step">
+<h2>step 1 : preparation</h2>
+Open a DOS or shell window, and go to the "dual" directory.
+</div>
+<div class="step">
+<h2>step 2 : clean up</h2>
+On the prompt type : ant<br>
+This will clean up the entire project directory tree (compiled classes and retrieved libs) and ivy cache. 
+You can do it each time you want to clean up this example.
+</div>
+<div class="step">
+<h2>step 3 : run the project</h2>
+Goto project directory. And simply run <b>ant</b>.
+<div class="shell"><pre>
+I:\dual\project>ant
+Buildfile: build.xml
+
+configure:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+
+resolve:
+:: resolving dependencies :: jayasoft/hello-ivy-working@xmen
+        confs: [default]
+downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar(2.0) ...
+.....
+.........
+..........
+...........
+. (165kB)
+        [SUCCESSFUL ] apache/commons-lang-2.0/commons-lang.jar[jar] (8032ms)
+downloading http://www.ibiblio.org/maven/commons-httpclient/jars/commons-httpclient-2.0.2.jar(2.0.2) ...
+...........
+......
+....
+..........
+............
+........ (220kB)
+        [SUCCESSFUL ] apache/commons-httpclient-2.0.2/commons-httpclient.jar[jar] (10031ms)
+downloading http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.4.jar(1.0.4) ...
+......... (37kB)
+        [SUCCESSFUL ] apache/commons-logging-1.0.4/commons-logging.jar[jar] (1469ms)
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   3   |   3   |   1   |   0   ||   3   |   3   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/hello-ivy
+        confs: [default]
+        3 artifacts copied, 0 already retrieved
+
+run:
+    [mkdir] Created dir: I:\dual\project\build
+    [javac] Compiling 1 source file to I:\dual\project\build
+     [java] standard message : hello ivy !
+     [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
+     [java] head status code with httpclient: 200
+     [java] now check if httpclient dependency on commons-logging has been realized
+     [java] found logging class in classpath: interface org.apache.commons.logging.Log
+
+BUILD SUCCESSFUL
+Total time: 24 seconds
+</pre></div></div>
+<br/>
+As you can see, ivy not only downloaded commons-lang and commons-httpclient, but also commons-logging. Indeed, commons-logging is a dependency of httpclient, as we can see in the httpclient ivy file found in the repository directory:
+<code>
+<ivy-module version="1.0">
+    <info organisation="apache" module="commons-httpclient" revision="2.0.2" status="release" publication="20041010174300" />
+    <dependencies>
+        <dependency name="commons-logging" rev="1.0.4" conf="default" />
+    </dependencies>
+</ivy-module>
+</code>
+<br/>
+So everything worked well, ivy file has been found in the repository directory and artifacts have been downloaded from ibiblio. You now just have to write ivy files for the module you often use, and they will be much easier to use... And imagine a world in which each module delivers also an ivy file. Since it is independent of the way to retrieve dependencies, it would made all dependencies handling much easier, wouldn't it ?
+
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/tutorial/ivyrep.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/tutorial/ivyrep.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/tutorial/ivyrep.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/tutorial/ivyrep.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+In this example, we will see the easiest way to use ivy and benefit from its transitive dependencies feature. 
+No configuration or other complicated files to write, only the list of libraries the project will use.
+
+<h1>The ivy.xml file</h1>
+This file is used to describe, the dependencies of the project on other libraries.
+Here is the sample : 
+<code>
+<ivy-module version="1.0">
+    <info organisation="jayasoft" module="hello-ivy" />
+    <dependencies>
+        <dependency org="apache" name="commons-lang" rev="2.0" />
+        <dependency org="apache" name="commons-cli" rev="1.0" />
+    </dependencies>
+</ivy-module>
+</code>
+The build file corresponding to use it, contains only :
+<code>
+<project xmlns:ivy="antlib:fr.jayasoft.ivy.ant" name="hello-ivy" default="run">
+    
+    ...
+    
+    <!-- ================================= 
+          target: resolve              
+         ================================= -->
+    <target name="resolve" description="--> retreive dependencies with ivy">
+        <ivy:retrieve />
+    </target>
+</project>
+</code>
+<h1>Running the project</h1>
+To run the sample, open a shell window, and go under the ivyrep example directory.
+Then, on the command prompt, just run ant :
+<div class="shell"><pre>
+I:\ivyrep>ant
+Buildfile: build.xml
+
+resolve:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+no configuration file found, using default...
+:: resolving dependencies :: jayasoft/ivyrep-example-working@xmen
+        confs: [default]
+downloading http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-1.0.jar(1.0) ...
+...... (31kB)
+        [SUCCESSFUL ] apache/commons-cli-1.0/commons-cli.jar[jar] (1437ms)
+downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar(2.0) ...
+..................................... (165kB)
+        [SUCCESSFUL ] apache/commons-lang-2.0/commons-lang.jar[jar] (5640ms)
+downloading http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.jar(1.0) ...
+..... (21kB)
+        [SUCCESSFUL ] apache/commons-logging-1.0/commons-logging.jar[jar] (1250ms)
+:: resolution report ::
+        :: evicted modules:
+        apache/commons-lang-1.0 by [apache/commons-lang-2.0] in [default]
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   4   |   3   |   2   |   1   ||   3   |   3   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/ivyrep-example
+        confs: [default]
+        3 artifacts copied, 0 already retrieved
+
+run:
+    [mkdir] Created dir: I:\ivyrep\build
+    [javac] Compiling 1 source file to I:\ivyrep\build
+     [java] standard message : hello ivy !
+     [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
+
+BUILD SUCCESSFUL
+Total time: 16 seconds</pre></div>
+<h1>What happened ?</h1>
+Without any configuration, other than it's default configuration, ivy uses the ivyrep resolver. This resolver looks for ivy files on <a href="../../ivyrep.html">ivyrep</a>, and for artifacts on ibiblio. That's what happened here. 
+
+The resolve task has found an <a href="http://ivyrep.jayasoft.org/apache/commons-cli/ivy-1.0.xml">ivy file on ivyrep for commons-cli 1.0</a>.
+This ivy file indicates that commons-cli 1.0 depends on commons-lang 1.0 and commons-logging 1.0.
+
+The resolve task detects the conflict between the revision 2.0 of commons-lang that is asked in the ivy above, and the revision 1.0 required in commons-cli. With no particular conflict manager, the 2.0 is selected, and the 1.0 is evicted. The 1.0 being evicted, it is not downloaded at all.
+
+The resolve task has then downloaded the commons-cli 1.0, commons-logging 1.0 and commons-lang.jar 2.0 files from ibiblioand put them to the ivy cache. 
+Then the retrieve task has copied them in the default library directory of the project: the lib dir.
+Some will say that the task was long to achieve. Yes, it's true it was, but it has downloaded from the internet the needed files. Let's try to run it again:
+<div class="shell"><pre>
+I:\ivyrep>ant
+Buildfile: build.xml
+
+resolve:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+no configuration file found, using default...
+:: resolving dependencies :: jayasoft/ivyrep-example-working@xmen
+        confs: [default]
+:: resolution report ::
+        :: evicted modules:
+        apache/commons-lang-1.0 by [apache/commons-lang-2.0] in [default]
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   4   |   0   |   0   |   1   ||   3   |   0   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/ivyrep-example
+        confs: [default]
+        0 artifacts copied, 3 already retrieved
+
+run:
+     [java] standard message : hello ivy !
+     [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
+
+BUILD SUCCESSFUL
+Total time: 2 seconds</pre></div>
+Great ! the cache was used, no download was needed and the build was almost instantaneous.
+
+If you want to check the content of the cache, by default it is put in your user home in a .ivy/cache directory. Check the next tutorials to see how to configure this.
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multi-project.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multi-project.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multi-project.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multi-project.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,319 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+This example is an illustration of dependency between two project.
+
+The dependant project declares that it uses the standalone one. We will illustrate two things : 
+<ul>
+  <li>public libraries declared by standalone project will automatically be recovered by the dependant project</li>
+  <li>the dependant project will retrieve the "latest" version of the standalone project</li>
+</ul>
+<h1>the projects used</h1>
+<h2>the project : standalone</h2>
+The standalone project is very simple. It depends on the apache library commons-lang and contains only one class: standalone.Main which provides two services:
+<ul>
+  <li>return the version of the project</li>
+  <li>capitalize a string using org.apache.commons.lang.WordUtils.capitalizeFully</li>
+</ul>
+Here is the content of the project:
+<ul>
+  <li>build.xml : the ant build file for the project</li>
+  <li>ivy.xml : the ivy project file</li>
+  <li>src\standalone\Main.java : the only class of the project</li>
+</ul>
+Take a look at it's <b>ivy.xml</b> file:
+<code>
+<ivy-module version="1.0">
+    <info organisation="jayasoft" module="standalone" />
+    <dependencies>
+        <dependency org="apache" name="commons-lang" rev="2.0" />
+    </dependencies>
+</ivy-module>
+</code>
+
+The ivy dependency file declares only one dependency on apache commons-lang library which by default is a public dependency (see <a href="../../doc/ivyfile.html">ivy file definition</a>).
+<h2>the project : depending</h2>
+The project depending is very simple too. It declares only one dependency on the latest version of the standalone project and it contains only one class depending.Main which make 2 things:
+<ul>
+  <li>getting the version of the standalone project throw a call to standalone.Main.getVersion()</li>
+  <li>transform a string throw a call to standalone.Main.capitalizeWords(str)</li>
+</ul>
+Take a look at it's <b>ivy.xml</b> file:
+<code>
+<ivy-module version="1.0">
+    <info organisation="jayasoft" module="depending" />
+    <dependencies>
+        <dependency name="standalone" rev="latest.integration" />
+    </dependencies>
+</ivy-module>
+</code>
+
+<h2>the <b>ivy</b> configuration</h2>
+The ivy configuration is made in the config directory wich contains 2 files :
+<ul>
+  <li>ivyconf.properties : a property file</li>
+  <li>ivyconf.xml : the file containing the ivy configuration</li>
+</ul>
+
+Let's analyse the ivyconf.xml file.
+<code>
+<ivyconf>
+        <properties file="${ivy.conf.dir}/ivyconf.properties" />
+        <conf defaultCache="${ivy.conf.dir}/ivy-cache" defaultResolver="libraries" />
+        <resolvers>
+                <filesystem name="projects">
+                        <artifact pattern="${repository.dir}/[artifact]-[revision].[ext]" />
+                        <ivy pattern="${repository.dir}/[module]-[revision].xml" />
+                </filesystem>
+                <ivyrep name="libraries" />
+        </resolvers>
+        <modules>
+                <module organisation="jayasoft" name=".*" resolver="projects" />
+        </modules>
+</ivyconf>
+</code>
+The file contains four main tags : properties, conf, resolvers and modules.
+<h2>the <b>properties</b> tag</h2>
+This tag only load some properties for the ivy process in the same manner as ant will do it.
+<h2>the <b>conf</b> tag</h2>
+This tag is in charge to initialize some parameters for ivy process. The directory that ivy will use to cache (to store) artifacts found will be in a sub directory called ivy-cache of the directory containing the ivyconf.xml file itself. 
+The second parameter, tells ivy to use a resolver called "libraries" as its default resolver. As a recall, a resolver is in charge to resolve an artifact from some information like : the organisation that provides the artifact, the name of the library and the version of the library. More information can be found in the <a href="../../doc/configuration.html">configuration documentation</a>.
+<h2>the <b>resolvers</b> tag</h2>
+This tag defines the resolvers to use. Here we have two resolvers defined: "projects" and "libraries".
+The filesystem resolver called "projects" is able to resolve the internal dependencies wanted. 
+The ivyrep resolver called "libraries" is able to find dependencies on <a href="../../ivyrep.html">ivyrep</a>.
+<h2>the <b>modules</b> tag</h2>
+The modules tag allows to configure which resolver should be use for which module. Here the configuration only tells to use the "projects" resolver for all modules having for organisation "jayasoft" and any module name (.* regexp matches any module name).
+For other modules (i.e. all modules not from jayasoft), since there is no special configuration, the default resolver will be used: "libraries".
+<h1>walkthrough</h1>
+<div class="step">
+<h2>step 1 : preparation</h2>
+Open a DOS or shell window, and go to the "dependance" directory.
+</div>
+<div class="step">
+<h2>step 2 : clean directory tree</h2>
+On the prompt type : ant
+This will clean up the entire project directory tree. You can do it each time you want to clean up this example.
+</div>
+<div class="step">
+<h2>step 3 : publication of standalone project</h2>
+Goto standalone directory  and publish the project
+<div class="shell"><pre>I:\standalone>ant publish
+Buildfile: build.xml
+
+configure:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+
+resolve:
+:: resolving dependencies :: jayasoft/standalone-working@xmen
+        confs: [default]
+downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar(2.0) ...
+.................................... (165kB)
+        [SUCCESSFUL ] apache/commons-lang-2.0/commons-lang.jar[jar] (6672ms)
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   1   |   1   |   0   |   0   ||   1   |   1   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/standalone
+        confs: [default]
+        1 artifacts copied, 0 already retrieved
+
+compile:
+    [mkdir] Created dir: I:\standalone\build\classes
+    [javac] Compiling 1 source file to I:\standalone\build\classes
+
+jar:
+[propertyfile] Creating new property file: I:\standalone\build\classes\version.properties
+      [jar] Building jar: I:\standalone\build\standalone.jar
+
+publish:
+:: delivering :: jayasoft/standalone-working@xmen :: 1 :: release :: Wed Apr 27 08:41:47 CEST 2005
+        delivering ivy file to I:\standalone/build/ivy.xml
+:: publishing :: jayasoft/standalone-working@xmen
+        published standalone to I:\config\repository\standalone-1.jar
+        published ivy to I:\config\repository\standalone-1.xml
+     [echo] project standalone released with version 1
+
+BUILD SUCCESSFUL
+Total time: 10 seconds</pre></div>
+What we see here:
+<ul>
+  <li>the project depends on 1 library (1 artifact)</li>
+  <li>the library was not in the ivy cahe and so was downloaded (1 downloaded)</li>
+  <li>the project has been released under version number 1</li>
+</ul>
+</div>
+To give more details on the publish, as you can see the call to the publish task has resulted in two main things:
+- the delivery of a resolved ivy file to build/ivy.xml. This has been done because by default the publish task not only publishes artifacts but also ivy file. So it has looked to the path where the ivy file to publish should be, using the artifactspattern: ${build.dir}/[artifact].[ext].
+For an ivy file, this resolves to build/ivy.xml. Because this file does not exist, it automatically make a call to the deliver task which delivers a resolved ivy file to this destination.
+- the publication of artifact standalone and resolved ivy file to the repository. Both are mere copy of files found in the current project, more precisely in the build dir. This is because the artifactspattern has been set to ${build.dir}/[artifact].[ext], so standalone artifact is found in build/standalone.jar and ivy file in build/ivy.xml. And because we have asked the publish task to publish them using the "projects" resolver, these files are copied to repository\standalone-1.jar and to repository\standalone-1.xml, respecting the artifact and ivy patterns of our configuration (see above).
+
+<div class="step">
+<h2>step 4 : running the depending project</h2>
+Goto to directory depending and run ant
+<div class="shell"><pre>I:\depending>ant
+Buildfile: build.xml
+
+clean:
+
+configure:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+
+resolve:
+:: resolving dependencies :: jayasoft/depending-working@xmen
+        confs: [default]
+        [1] jayasoft/standalone
+downloading file:/I:/config/repository/standalone-1.jar(1) ...
+. (1kB)
+        [SUCCESSFUL ] jayasoft/standalone-1/standalone.jar[jar] (15ms)
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   2   |   2   |   2   |   0   ||   2   |   1   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/depending
+        confs: [default]
+        2 artifacts copied, 0 already retrieved
+
+compile:
+    [mkdir] Created dir: I:\depending\build\classes
+    [javac] Compiling 1 source file to I:\depending\build\classes
+
+run:
+     [java] you are using version 1 of class standalone.Main
+     [java] standard message : i am depending.Main and standalone.Main will do the job for me
+     [java]     [standalone.Main] capitalizing string "i am depending.Main and standalone.Main will do the job for me" 
+				     using org.apache.commons.lang.WordUtils
+     [java] capitalized message : I Am Depending.main And Standalone.main Will Do The Job For Me
+
+BUILD SUCCESSFUL
+Total time: 3 seconds</pre></div>
+What we see here :
+<ul>
+  <li>the project depends on 2 libraries (2 artifacts)</li>
+  <li>one of the libraries was in the cache because there was only 1 download (1 downloaded)</li>
+  <li>ivy retreived the version 1 of the project standalone. The call to standalone.Main.getVersion() has returned 1. If you look in the depending/lib directory, you should see standalone-1.jar which is the artifact version 1 of the project standalone</li>
+  <li>the call to standalone.Main.capitalizeWords(str) succeed, what significate that the required library were in the classpath. If you look at the lib directory, you will see that the library commons-lang-2.0.jar was retreived. This library was declared to be used by the project "standalone", so ivy get it too for the dependant project.</li>
+</ul>
+</div>
+<div class="step">
+<h2>step 5 : new version of standalone project</h2>
+Like we did before in step 3, publish again the standalone project. This will result as a new version of the project.
+<div class="shell"><pre>I:\standalone>ant publish
+Buildfile: build.xml
+
+configure:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+
+resolve:
+:: resolving dependencies :: jayasoft/standalone-working@xmen
+        confs: [default]
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   1   |   0   |   0   |   0   ||   1   |   0   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/standalone
+        confs: [default]
+        0 artifacts copied, 1 already retrieved
+
+compile:
+
+jar:
+[propertyfile] Updating property file: I:\standalone\build\classes\version.properties
+      [jar] Building jar: I:\standalone\build\standalone.jar
+
+publish:
+   [delete] Deleting: I:\standalone\build\ivy.xml
+:: delivering :: jayasoft/standalone-working@xmen :: 2 :: release :: Wed Apr 27 09:17:13 CEST 2005
+        delivering ivy file to I:\standalone/build/ivy.xml
+:: publishing :: jayasoft/standalone-working@xmen
+        published standalone to I:\config\repository\standalone-2.jar
+        published ivy to I:\config\repository\standalone-2.xml
+     [echo] project standalone released with version 2
+
+BUILD SUCCESSFUL
+Total time: 2 seconds</pre></div>
+Now if you look in your repository folder, you must find 2 version published of the standalone project.
+Let's look at it:
+<div class="shell"><pre>I:\dependence\standalone>dir ..\config\repository /w
+ Le volume dans le lecteur I s'appelle DATA
+ Le numéro de série du volume est 30E5-91BA
+
+ Répertoire de I:\dependence\config\repository
+
+[.]                [..]               standalone-1.jar   standalone-1.xml   standalone-2.jar   standalone-2.xml
+               4 fichier(s)            3 936 octets
+               2 Rép(s)   9 874 350 080 octets libres
+
+I:\dependence\standalone></pre></div>
+</div>
+Ok now our repository contains two versions of the project <b>standalone</b>, other projects can refer to both versions.
+<div class="step">
+<h2>step 6 : depending got the new version</h2>
+What do we expect about running again the depending project? Two major things are expected: 
+<ul>
+  <li>retrieve the version 2 as the latest.integration version of the standalone project</li>
+  <li>running the test must display version 2 of standalone project</li>
+</ul>
+Let's go!!!
+<div class="shell"><pre>I:\depending>ant
+Buildfile: build.xml
+
+clean:
+   [delete] Deleting 3 files from I:\depending
+   [delete] Deleted 4 directories from I:\depending
+
+configure:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+
+resolve:
+:: resolving dependencies :: jayasoft/depending-working@xmen
+        confs: [default]
+        [2] jayasoft/standalone
+downloading file:/I:/config/repository/standalone-2.jar(2) ...
+. (1kB)
+        [SUCCESSFUL ] jayasoft/standalone-2/standalone.jar[jar] (0ms)
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   2   |   2   |   2   |   0   ||   2   |   1   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/depending
+        confs: [default]
+        2 artifacts copied, 0 already retrieved
+
+compile:
+    [mkdir] Created dir: I:\depending\build\classes
+    [javac] Compiling 1 source file to I:\depending\build\classes
+
+run:
+     [java] you are using version 2 of class standalone.Main
+     [java] standard message : i am depending.Main and standalone.Main will do the job for me
+     [java]     [standalone.Main] capitalizing string "i am depending.Main and standalone.Main will do the job for me" 
+			     using org.apache.commons.lang.WordUtils
+     [java] capitalized message : I Am Depending.main And Standalone.main Will Do The Job For Me
+
+BUILD SUCCESSFUL
+Total time: 3 seconds</pre></div>
+Ok we have the result expected as the run target shows that we are using the version 2 of the main class of standalone project. If we take a look at the resolve target results, we can see that one artifact has been downloaded to the ivy cache. In fact this file is the version 2 of the standalone project that was taken from the repository, you can now retrieve it in the ivy-cache directory.
+</div>
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiple.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiple.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiple.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiple.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+This example is an illustration of how artefacts can be retreived by multiple resolvers. Using multiple resolvers is very important when using continous integration. Indeed, in such environements, you can use multiple repositories and so multiple resolvers to retreive both released versions of projects than continous integrated versions produced for example with cruise-control. In our example, we will just show how to use two resolvers, one on a local repository and one using ibiblio repository.
+
+<h1>project description</h1>
+<h2>the project : chained-resolvers</h2>
+The project is very simple and contains only one test class : example.Hello
+It depends on two libraries apache commons-lang and a little test library (sources are included in jar file). The test library is used by the project to uppercase a string, and commons-lang is used to capitalize the same string.
+
+Here is the content of the project:
+<ul>
+  <li>build.xml : the ant build file for the project</li>
+  <li>ivy.xml : the ivy project file</li>
+  <li>src\example\Hello.java : the only class of the project</li>
+</ul>
+Take a look at it's <b>ivy.xml</b> file :
+<code>
+<ivy-module version="1.0">
+    <info organisation="jayasoft" module="chained-resolvers" />
+    <dependencies>
+        <dependency org="apache" name="commons-lang" rev="2.0" />
+        <dependency name="test" rev="1.0" />
+    </dependencies>
+</ivy-module>
+</code>
+As we expect, the ivy file declares to be dependent on the two libraries that the project use : apache commons-lang.jar and test.jar.
+
+<h2>the <b>ivy</b> configuration</h2>
+The ivy configuration is made in the config directory it contains only one file: ivyconf.xml.
+
+Let's analyse it.
+<code>
+<ivyconf>
+  <conf defaultResolver="chain-example" />
+  <resolvers>
+    <chain name="chain-example">
+      <filesystem name="libraries">
+        <artifact pattern="${ivy.conf.dir}/repository/[artifact]-[revision].[type]" />
+      </filesystem>
+      <ibiblio name="ibiblio" />
+    </chain>
+  </resolvers>
+</ivyconf>
+</code>
+<h2>the <b>conf</b> tag</h2>
+This tag initializes ivy with some parameters. Here only one is used, the name of the resolver to use by default.
+
+<h2>the <b>resolvers</b> tag</h2>
+Under this tag, we can find the description of the resolvers that ivy will use. In our example, we have only one resolver, called "chain-example", which is quite special as it defines a list (a chain) of resolvers.
+The resolvers put in the chain are : 
+<ul>
+  <li>libraries : it is a file resolver. This one is configured to look for artefacts in the "repository" sub directory of the directory that contains the ivyconf.xml file.</li>
+  <li>ibiblio : this resolver is a special one. It looks in the ibiblio maven repository to retreive the libraries.</li>
+</ul>
+
+<h1>walkthrough</h1>
+<div class="step">
+<h2>step 1 : preparation</h2>
+Open a DOS or shell window, and go to the "chained-resolvers" directory.
+</div>
+<div class="step">
+<h2>step 2 : clean directory tree</h2>
+On the prompt type : ant<br>
+This will clean up the entire project directory tree and ivy cache. You can do it each time you want to clean up this example.
+</div>
+<div class="step">
+<h2>step 3 : run the project</h2>
+Goto chainedresolvers-project directory. And simply run <b>ant</b>.
+<div class="shell"><pre>I:\chained-resolvers\chainedresolvers-project>ant
+Buildfile: build.xml
+
+configure:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+
+resolve:
+:: resolving dependencies :: jayasoft/chained-resolvers-working@xmen
+        confs: [default]
+downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar(2.0) ...
+.................................... (165kB)
+        [SUCCESSFUL ] apache/commons-lang-2.0/commons-lang.jar[jar] (5390ms)
+downloading file:/I:/chained-resolvers/config/repository/test-1.0.jar(1.0) ...
+. (1kB)
+        [SUCCESSFUL ] jayasoft/test-1.0/test.jar[jar] (16ms)
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   2   |   2   |   0   |   0   ||   2   |   2   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/chained-resolvers
+        confs: [default]
+        2 artifacts copied, 0 already retrieved
+
+run:
+    [mkdir] Created dir: I:\chained-resolvers\chainedresolvers-project\build
+    [javac] Compiling 1 source file to I:\chained-resolvers\chainedresolvers-project\build
+     [java] standard message :example world !
+     [java] capitalized by org.apache.commons.lang.WordUtils : Example World !
+     [java] upperCased by test.StringUtils : EXAMPLE WORLD !
+
+BUILD SUCCESSFUL
+Total time: 9 seconds</pre></div></div>
+We can see in the log of the resolve task, that the two dependencies have been retrieved (2 artifacts) and copied to the ivy cache directory (2 downloaded). The run target succeed in using both commons-lang.jar comming from ibiblio repository and test.jar comming from the local repository.
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiproject.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiproject.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiproject.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/tutorial/multiproject.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+<strong>Warning: tutorial in progress !</strong>
+
+In the previous tutorial you have seen how to deal with dependencies between two simple projects.
+
+This tutorial will guide you through the use of ivy in a more complete environment. All the sources of this tutorial are available in src/example/multi-project in ivy distribution (warning: the sources attached with ivy 1.3 contain an error in the common.xml file. Please use either latest build to find proper example sources or replace the common.xml file with <a href="./misc/ivy/samples/multi-project/common.xml">this one</a>).
+
+<h1>Context</h1>
+Here is a 10000ft overview of the projects involved in this tutorial:
+<ul>
+<li>version</li> helps to identify module by a version
+<li>list</li> gives a list of files in a directory (recursively)
+<li>size</li> gives the total size of all files in a directory, or of a collection of files
+<li>find</li> find files in a given dir or among a list of files which match a given name
+<li>sizewhere</li> gives the total size of files matching a name in a directory
+<li>console</li> give access to all other modules features through a simple console app
+</ul>
+For sure this is not aimed to demonstrate how to develop a complex app or give indication of advanced algorithm :-)
+
+But this gives a simple understanding of how ivy can be used to develop an application divided in multitple modules.
+
+Now, here is how these modules relate to each other:
+<a href="/misc/ivy/samples/projects-dependencies-graph.jpg"><img src="/misc/ivy/samples/projects-dependencies-graph-small.jpg" alt="dependencies graph"/><br/><center><i>click to enlarge</i></center></a>
+
+Modules in yellow are the modules described in this tutorial, and modules in blue are external dependencies (we will see how to generate this graph later in this tutorial).
+
+As you can see, we have here a pretty interesting set of modules with dependencies between each other, each depending on the latest version of the others.
+
+<h1>The example files</h1>
+The sources for this tutorial can be found in src/example/multi-project in the ivy distribution. In this directory, you will find the following files:
+<ul>
+<li><a href="./misc/ivy/samples/multi-project/build.xml">build.xml</a></li>This a root build file which can be used to call targets on all modules, in the order of their dependencies (ensuring that a module is always built before any module depending on it, for instance)
+<li>common
+<ul>
+<li><a href="./misc/ivy/samples/multi-project/common.xml">common.xml</a></li> the common build file imported by all build.xml files for each project. This build defines the targets which can be used in all projects.
+<li>build.properties</li>some properties common to all projects
+</ul>
+</li>
+<li>projects</li>
+contains a directory per module, with for each
+<ul>
+<li>ivy.xml</li>Ivy file of the module, describing its dependencies upon other modules and / or external modules.
+Example:
+<code type="xml">
+<ivy-module version="1.0">
+    <info 
+        organisation="jayasoft"
+        module="find"
+        status="integration"/>
+    <configurations>
+      <conf name="core"/>
+      <conf name="standalone" extends="core"/>
+    </configurations>
+    <publications>
+      <artifact name="find" type="jar" conf="core" />
+    </publications>
+    <dependencies>
+      <dependency name="version" rev="latest.integration" conf="core->default" />
+      <dependency name="list" rev="latest.integration" conf="core" />
+      <dependency org="apache" name="commons-collections" rev="3.1" conf="core->default" />
+      <dependency org="apache" name="commons-cli" rev="1.0" conf="standalone->default" />
+    </dependencies>
+</ivy-module>
+</code>
+<li>build.xml</li>The build file of the project, which consists mainly in an import of the common build file and of a module specific properties file:
+<code type="xml">
+<project name="find" default="compile">
+	<property file="build.properties"/>
+	
+	<import file="${common.dir}/common.xml"/>
+</project>
+</code>
+<li>build.properties</li>Module specific properties + properties to find the common build file
+<code>
+projects.dir = ${basedir}/..
+wkspace.dir = ${projects.dir}/..
+common.dir = ${wkspace.dir}/common
+</code>
+<li>src</li> the source directory with all java sources
+</ul>
+</ul>
+
+Note that this doesn't demonstrate good practice for software development in general, in particular you won't find any unit test in this samples, even if we think unit testing is very important. But this isn't the aim of this tutorial.
+
+Now that you are a bit more familiar with the structure, let's have a look at the most important part of this example: the common build file. Indeed, as you have seen all modules build files only import the common build file, and defines their dependencies in their ivy files (with which you should begin to be familiar).
+
+So, here are some aspects of this common build file:
+<h2>ivy configuration</h2>
+<code type="xml">
+<target name="configure">
+    <!-- setup ivy default configuration with some custom info -->
+    <property name="ivy.local.default.root" value="${repository.dir}/local"/>
+    <property name="ivy.shared.default.root" value="${repository.dir}/shared"/>
+
+    <!-- here is how we would have configured ivy if we had our own ivyconf file
+        <ivy:configure file="${common.dir}/ivyconf.xml" />
+    -->
+</target>
+</code>
+
+This target configures ivy only by setting two properties: the location for the local repository and the location for the shared repository. It's the only configuration done here, since ivy 1.3 is configured by default to work in a team environment (see <a href="../../tutorial/defaultconf.html">default configuration tutorial</a> for details about this). For sure in a real environment the shared repository location would rather be in a team shared directory (or in a more complex repository, again see the default configuration tutorial to see how to use something really different).
+This target only indicates in comments how the configuration would have been done if the default configuration wasn't ok for our purpose.
+
+<h2>resolve dependencies</h2>
+<code type="xml">
+<target name="resolve" depends="configure, clean-lib" description="--> retrieve dependencies with ivy">
+    <mkdir dir="${lib.dir}"/> <!-- not usually necessary, ivy creates the directory IF there are dependencies -->
+    <!-- this target is named resolve even if we do a retrieve: 
+         in fact a resolve will be called, and then the retrieve will simply copy files in the lib directory -->
+    <ivy:retrieve pattern="${lib.dir}/[artifact].[ext]" />
+</target>
+</code>
+Here we see that we only call a retrieve task, the resolve being done automatically with default parameters (which are ok in our case). So here nothing special, we simply use ivy to retrieve dependencies in the lib directory, putting artifacts without revision in their names (it's easier to use with an ide, for instance).
+
+<h2>publish</h2>
+<code type="xml">
+<target name="publish" depends="clean-build, new-version, jar" description="--> publish this project in the ivy repository">
+    <property name="revision" value="${version}"/>
+    <ivy:publish artifactspattern="${build.dir}/[artifact].[ext]" 
+        resolver="shared"
+        pubrevision="${revision}" 
+        status="release"
+    	/>
+    <echo message="project ${ant.project.name} released with version ${revision}" />
+</target>
+</code>
+This target let publish the module in the shared repository, with the revision found in the version property, which is set by other targets. It can be used when a module reaches a specific milestone, or whenever you want the teeam to benefit from a new version of the module.
+<h2>publish-local</h2>
+<code type="xml">
+<target name="publish-local" depends="local-version, jar" description="--> publish this project in the local ivy repository">
+    <delete file="${build.dir}/ivy.xml"/> <!-- delete last produced ivy file to be sure a new one will be generated -->
+    <ivy:publish artifactspattern="${build.dir}/[artifact].[ext]" 
+        resolver="local"
+        pubrevision="${revision}"
+        pubdate="${now}"
+        status="integration"
+    	/>
+    <echo message="project ${ant.project.name} published locally with version ${revision}" />
+</target>
+</code>
+This is very similar to the publish task, except that this publish the revision in the local repository, which is used only in your environment and doesn't disturb the team. When you change something in a module and want to benefit from the change in another one, you can simply call publish-local in this module, and then your next build of the other module will automatically get this local version.
+<h2>clean-local</h2>
+<code type="xml">
+<target name="clean-local" depends="configure" description="cleans the local repository for the current module">
+    <delete dir="${ivy.local.default.root}/${ant.project.name}"/>
+</target>
+</code>
+This target is used when you don't want to use your local version of a module anymore, for example when you release a new version to the whole team.
+<h2>report</h2>
+<code type="xml">
+<target name="report" depends="resolve" description="--> generates a report of dependencies">
+    <ivy:report todir="${build.dir}"/>
+</target>
+</code>
+Generates both an html report and a graphml report.
+
+For example, to generate a graph like the one shown at the beginning of this tutorial, you just have to follow the instructions given <a href="http://www.jayasoft.org/ivy/doc/yed">here</a> with the graphml file you will find in <code>projects/console/build/</code> after having called report in the console project, and that's it, you have a clear overview of all your app dependencies !
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/tutorial/start.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/tutorial/start.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/tutorial/start.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/tutorial/start.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+In this example, we will see one of the easiest way to use ivy. No configuration or other complicated files to write, only the list of libraries the project will use. 
+
+If you have already followed the go-ivy tutorial on the <a href="../../doc/tutorial.html">tutorials home page</a>, this tutorial will be already familiar. It is actually pretty much the same, except that it requires ivy to be installed in your ant lib, and the java source and the ivy dependencies are available in separate files. For the java source, it's definitly recommended to put it in a separate file. For ivy dependencies, it depends on your usage and is discussed on the <a href="../../doc/bestpractices.html">best pratices page</a>. 
+
+But enough introduction material, let's go with this simple tutorial!
+
+<em>You'll find this tutorial sources in the ivy distribution in the src/example/hello-ivy directory.</em>
+
+<h1>The ivy.xml file</h1>
+This file is used to describe the dependencies of the project on other libraries.
+Here is the sample: 
+<code type="xml">
+<ivy-module version="1.0">
+    <info organisation="jayasoft" module="hello-ivy" />
+    <dependencies>
+        <dependency org="apache" name="commons-lang" rev="2.0" />
+    </dependencies>
+</ivy-module>
+</code>
+
+<h1>The build.xml file</h1>
+The build file corresponding to use it, contains only:
+<code type="xml">
+<project xmlns:ivy="antlib:fr.jayasoft.ivy.ant" name="hello-ivy" default="run">
+    
+    ...
+    
+    <!-- ================================= 
+          target: resolve              
+         ================================= -->
+    <target name="resolve" description="--> retrieve dependencies with ivy">
+        <ivy:retrieve />
+    </target>
+</project>
+</code>
+<h1>Running the project</h1>
+To run the sample, open a dos (or shell) window, and go under the hello-ivy example directory.
+Then, on the command prompt, just run ant :
+<div class="shell"><pre>
+I:\hello-ivy>ant
+Buildfile: build.xml
+
+resolve:
+:: Ivy 1.0-rc3 - 20050421161206 :: http://ivy.jayasoft.org/ ::
+no configuration file found, using default...
+:: resolving dependencies :: jayasoft/hello-ivy-working@xmen
+        confs: [default]
+downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar(2.0) ...
+..................................... (165kB)
+        [SUCCESSFUL ] apache/commons-lang-2.0/commons-lang.jar[jar] (4688ms)
+:: resolution report ::
+        ---------------------------------------------------------------------
+        |                  |            modules            ||   artifacts   |
+        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
+        ---------------------------------------------------------------------
+        |      default     |   1   |   1   |   0   |   0   ||   1   |   1   |
+        ---------------------------------------------------------------------
+:: retrieving :: jayasoft/hello-ivy
+        confs: [default]
+        1 artifacts copied, 0 already retrieved
+
+run:
+    [mkdir] Created dir: I:\hello-ivy\build
+    [javac] Compiling 1 source file to I:\hello-ivy\build
+     [java] standard message : hello ivy !
+     [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
+
+BUILD SUCCESSFUL
+Total time: 8 seconds</pre></div>
+<h1>What happened ?</h1>
+Without any configuration, other than it's default configuration, ivy retrieve files from the maven ibiblio libraries repository. That's what happened here. 
+The resolve task has downloaded the commons-lang.jar file from ibiblio, then copied it to the ivy cache and then dispatch it in the default library directory of the project : the lib dir.
+Some will say that the task was long to achieve. Yeah, it's true it was, but it has downloaded from the web the needed file. Let's try to run it again:
+<div class="shell"><pre>I:\hello-ivy>ant
+Buildfile: build.xml
+
+resolve:
+:: resolving dependencies :: jayasoft/hello-ivy-null :: [default]
+:: resolution report ::
+        [default] jayasoft/hello-ivy-working@rahan: 1 artifacts (0 downloaded)
+:: retrieving :: jayasoft/hello-ivy :: [default]
+
+run:
+     [java] standard message : hello ivy !
+     [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
+
+BUILD SUCCESSFUL
+Total time: 1 second</pre></div>
+Great ! the cache was used, no download was needed and the build was instantaneous.
+
+If you want to check the content of the cache, by default it is put in your user home in a .ivy/cache directory.
+
+And now, if you want to generate a report detailing all the dependencies of your module, you can call the report target, and check the generated file in the build directory. You should obtain something looking like <a href="./misc/ivy/samples/jayasoft-ivyrep-example-default.html">this</a>.
+
+You are now ready to go to the next tutorials to go one step beyond using ivy transitive dependencies management.
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 1};</script>	
+	<script type="text/javascript" src="../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+The main and most frequent way to use ivy is from an ant build file. However, ivy can also be called as a standalone application
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/artifactproperty.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/artifactproperty.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/artifactproperty.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/artifactproperty.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+<div class="since">since 1.1</div>
+Sets an ant property for each dependency artifacts previously resolved.
+
+Please prefer the use of retrieve + standard ant path creation, which make your build more independent from ivy (once artifacts are properly retrieved, ivy is not required any more).
+
+The property name and value are generated using the classical pattern concept, all artifact tokens and ivy variables being available.
+  
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>name</td><td>a pattern used to generate the name of the properties to set</td>
+        <td>Yes</td></tr>
+    <tr><td>value</td><td>a pattern used to generate the value of the properties to set</td>
+        <td>Yes</td></tr>
+    <tr><td>conf</td><td>a comma separated list of the configurations for which properties should be set</td>
+        <td>No. Defaults to the configurations resolved by the last resolve call, or * if no resolve was explicitly called</td></tr>
+    <tr><td>haltonfailure</td><td>true to halt the build on ivy failure, false to continue</td><td>No. Defaults to true</td></tr>
+    <tr><td>validate</td><td>true to force ivy files validation against ivy.xsd, false to force no validation</td>
+        <td>No. Defaults to default ivy value (as configured in configuration file)</td></tr>
+</tbody>
+</table>
+
+<h1>Example</h1>
+Suppose we have one dependency called <i>mydep</i> in revision 1.0 publishing two artifacts: <i>foo.jar</i> and <i>bar.jar</i>.
+Then:
+<code type="xml">
+<artifactproperty conf="build" 
+       name="[module].[artifact]-[revision]" 
+       value="${cache.dir}/[module]/[artifact]-[revision].[ext]"/>
+</code>
+will set two properties:
+<code>
+mydep.foo-1.0 = my/cache/dir/mydep/foo-1.0.jar
+mydep.bar-1.0 = my/cache/dir/mydep/bar-1.0.jar
+</code>
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/artifactreport.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/artifactreport.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/artifactreport.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/artifactreport.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+<span class="since">since 1.4</span>
+The artifactreport task generates an xml report of all artifacts dependencies resolved by the last <a href="../../doc/use/resolve.html">resolve</a> task call during the same build.
+
+This report is different from the standard <a href="../../doc/use/report.html">report</a> which reports all modules and artifacts, whle this report is much simpler and focuses only on artifacts, and gives more information on artifacts, such as the original location and the retrieve location. 
+
+It is thus easy to use to generate things like a classpath file for an IDE.
+
+See this <a href="../../doc/articles/ease-multi-module.html">article by Johan Stuyts</a> (who contributed this task) to see how he uses this task.
+
+Here is an example of generate file:
+<code type="xml">
+<?xml version="1.0" encoding="UTF-8"?>
+<modules>
+  <module organisation="hippo" name="sant-classes" rev="1.01.00b04-dev" status="integration">
+    <artifact name="sant-classes-src" ext="zip" type="zip">
+      <origin-location is-local="true">
+        C:/home/jstuyts/data/ivy/local/hippo/sant-classes/1.01.00b04-dev/sant-classes-src-1.01.00b04-dev.zip</origin-location>
+      <cache-location>
+        C:/home/jstuyts/data/ivy/cache/hippo/sant-classes/zips/sant-classes-src-1.01.00b04-dev.zip</cache-location>
+      <retrieve-location>lib/test/sant-classes-src-1.01.00b04-dev.zip</retrieve-location>
+    </artifact>
+    <artifact name="sant-classes-unoptimized" ext="jar" type="jar">
+      <origin-location is-local="true">
+        C:/home/jstuyts/data/ivy/local/hippo/sant-classes/1.01.00b04-dev/sant-classes-unoptimized-1.01.00b04-dev.jar</origin-location>
+      <cache-location>
+        C:/home/jstuyts/data/ivy/cache/hippo/sant-classes/jars/sant-classes-unoptimized-1.01.00b04-dev.jar</cache-location>
+      <retrieve-location>lib/test/sant-classes-unoptimized-1.01.00b04-dev.jar</retrieve-location>
+    </artifact>
+  </module>
+  <module organisation="testng" name="testng" rev="4.6.1-jdk15" status="release">
+    <artifact name="testng" ext="jar" type="jar">
+      <origin-location is-local="false">
+        http://repository.hippocms.org/maven/testng/jars/testng-4.6.1-jdk15.jar&lt;/origin-location>
+      <cache-location>C:/home/jstuyts/data/ivy/cache/testng/testng/jars/testng-4.6.1-jdk15.jar</cache-location>
+      <retrieve-location>lib/test/testng-4.6.1-jdk15.jar</retrieve-location>
+    </artifact>
+  </module> 
+</code>
+
+<h1>Attributes</h1>
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>tofile</td><td>the file to which the report should be written</td>
+        <td>Yes</td></tr>
+    <tr><td>pattern</td><td>the retrieve pattern to use to fill the retrieve location information about the artifacts</td>
+        <td>No. Defaults to ${ivy.retrieve.pattern}.</td></tr>
+    <tr><td>conf</td><td>a comma separated list of the configurations to use to generate the report</td>
+        <td>No. Defaults to the configurations resolved by the last resolve call</td></tr>
+    <tr><td>haltonfailure</td><td>true to halt the build on ivy failure, false to continue</td><td>No. Defaults to true</td></tr>
+</tbody>
+</table>
+<h1>Examples</h1>
+<code type="xml">
+<ivy:artifactreport tofile="${basedir}/path/to/myreport.xml" />
+</code>
+Generates the artifact report for all configurations resolved during the last resolve call (in the same build).
+
+<code type="xml">
+<ivy:artifactreport tofile="${basedir}/path/to/myreport.xml" conf="default"/>
+</code>
+Generates the artifact report for only the default configuration resolved during the last resolve call.
+
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/buildlist.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/buildlist.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/buildlist.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/buildlist.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+The buildlist task enable to obtain a filelist of files (usually build.xml files) ordered according to ivy dependency information from the least dependent to the most one, or the inverse. (<span class="since">since 1.2</span>)
+
+This is particularly useful combined with subant, to build a set of interelated projects being sure that a dependency will be built before any module depending on it.
+
+<span class="since">since 1.3</span> A root attribute can also be used to include, among all the modules found, only the one that are dependencies (either direct or transitive) of a root module. This can also be used with the excluderoot attribute, which when set to true will exclude the root itself from the list.
+
+<span class="since">since 1.4.1</span> A leaf attribute can also be used to include, among all the modules found, only the one that have dependencies (either direct or transitive) on a leaf module. This can also be used with the excludeleaf attribute, which when set to true will exclude the leaf itself from the list.
+
+<span class="since">since 1.4</span> The ivy.sorted.modules property is set in the ant at the end of the task with a comma separated list of ordered modules. This can be useful for debug or information purpose.
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>reference</td><td>the reference of the path to set</td>
+        <td>Yes</td></tr>
+    <tr><td>ivyfilepath</td><td>the relative path from files to order to corresponding ivy files</td><td>No. Defaults to ${ivy.buildlist.ivyfilepath}</td></tr>
+    <tr><td>root</td><td><span class="since">since 1.3</span> the name of the module which should be considered as the root of the buildlist</td><td>No. Defaults to no root (all modules are used in the build list)</td></tr>
+    <tr><td>excluderoot</td><td><span class="since">since 1.3</span> true if the root defined should be excluded from the list</td><td>No. Defaults to false</td></tr>
+    <tr><td>leaf</td><td><span class="since">since 1.4.1</span> the name of the module which should be considered as the leaf of the buildlist</td><td>No. Defaults to no leaf (all modules are used in the build list)</td></tr>
+    <tr><td>excludeleaf</td><td><span class="since">since 1.4.1</span> true if the leaf defined should be excluded from the list</td><td>No. Defaults to false</td></tr>
+    <tr><td>haltonerror</td><td>true to halt the build when an invalid ivy file is encountered, false to continue</td><td>No. Defaults to true</td></tr>
+    <tr><td>skipbuildwithoutivy</td><td>true to skip files of the fileset with no corresponding ivy file, false otherwise. If false the file with no corresponding ivy file will be considered as independent of the other and put at the beginning of the built filelist.</td><td>No. Defaults to false</td></tr>
+    <tr><td>reverse</td><td>true to obtain the list in the reverse order, i.e. from the most dependent to the least one</td><td>No. Defaults to default false</td></tr>
+</tbody>
+</table>
+
+<h2>Parameters specified as nested elements</h2>
+<h3>fileset</h3>
+FileSets are used to select sets of files to order.
+<h1>Examples</h1>
+<code type="xml">
+    <ivy:buildlist reference="build-path">
+      <fileset dir="projects" includes="**/build.xml"/>
+    </ivy:buildlist>
+</code>
+Builds a list of build.xml files sorted according to the ivy.xml files found at the same level (the default value for ivyfilepath is ivy.xml).
+
+This list can then be used like that:
+<code type="xml">
+    <subant target="build" buildpathref="build-path" />
+</code>
+
+<hr/>
+<code type="xml">
+    <ivy:buildlist reference="build-path" ivyfilepath="ivy/ivy.xml" reverse="true">
+      <fileset dir="projects" includes="**/build.xml"/>
+    </ivy:buildlist>
+</code>
+Builds a list of build.xml files sorted according to the ivy.xml files found in an ivy directory relative to those build files. The list is sorted from the most dependent to the least one.
+<hr/>
+<code type="xml">
+    <ivy:buildlist reference="build-path" ivyfilepath="ivy/ivy.xml" root="myapp">
+      <fileset dir="projects" includes="**/build.xml"/>
+    </ivy:buildlist>
+</code>
+Builds a list of build.xml files sorted according to the ivy.xml files found in an ivy directory relative to those build files. Only build.xml files of modules which are dependencies of myapp (either direct or transitive) are put in the result list.
+<hr/>
+<code type="xml">
+    <ivy:buildlist reference="build-path" ivyfilepath="ivy/ivy.xml" leaf="mymodule">
+      <fileset dir="projects" includes="**/build.xml"/>
+    </ivy:buildlist>
+</code>
+Builds a list of build.xml files sorted according to the ivy.xml files found in an ivy directory relative to those build files. Only build.xml files of modules which have dependencies (direct or transitive) on mymodule are put in the result list.
+
+
+
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/buildnumber.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/buildnumber.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/buildnumber.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/buildnumber.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+<span class="since">since 1.4</span>
+The buildnumber task is similar to the ant buildnumber task, except that it uses ivy repository to find what is the latest version and calculate a new one for you.
+
+When called it sets four properties according to what has been found.
+These properties are:
+<ul>
+<li>ivy.revision</li> the last revision found in the repository
+<li>ivy.new.revision</li> the new revision calculated from the last one (see below)
+<li>ivy.build.number</li> the build number found in the repository
+<li>ivy.new.build.number</li> the new build number calculated from the last one, usually with +1
+</ul>
+
+build numbers are always numbers (composed of digit characters only).
+ivy.revision can be not set if no revision was found
+ivy.build.number can be not set if no revision was found or if no number was found in it
+ivy.new.build.number can be not set if the default new revision to use when no revision is found do not contain any number
+
+The new revision is calculated using a somewhat complex to explain but very easy to use algorithm, depending on which latest version you asked.
+
+Indeed you can ask for a new revision based upon the latest found for a particular prefix (the revision asked), then the new revision will be the one immediately after with only the prefix in common. If no prefix is set the very latest version is searched.
+
+Examples (suppose the latest version of the module is 1.3.1):
+<table>
+<tr><th>revision asked</th><th>ivy.revision</th><th>ivy.new.revision</th><th>ivy.build.number</th><th>ivy.new.build.number</th></tr>
+<tr><td>1.3</td><td>1.3.1</td><td>1.3.2</td><td>1</td><td>2</td></tr>
+<tr><td>1</td><td>1.3.1</td><td>1.4</td><td>3</td><td>4</td></tr>
+<tr><td>2</td><td>not set</td><td>2.0</td><td>not set</td><td>0</td></tr>
+<tr><td></td><td>1.3.1</td><td>1.3.2</td><td>1</td><td>2</td></tr>
+</table>
+Note that when asking for revision 1, you can get a revision 10.0. To avoid that you can use 1. as revision asked, but in this case ivy won't find revision 1 if its the latest one, and it will thus give 1.0 as new revision. The solution to this problem is to use versions with always the same number of parts (for instance 1.0.0 instead of 1).
+
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>organisation</td><td>the organisation of the module for which a new build number should be calculated</td>
+        <td>Yes</td></tr>
+    <tr><td>module</td><td>the name of the module for which a new build number should be calculated</td>
+        <td>Yes</td></tr>
+    <tr><td>branch</td><td>the branch of the module for which a new build number should be calculated</td>
+        <td>No, defaults to the default branch for this module</td></tr>
+    <tr><td>revision</td><td>the revision prefix for which a new build number should be calculated</td>
+        <td>No, defaults to no prefix (will find the latest version)</td></tr>
+    <tr><td>default</td><td>the default revision to assume when no revision prefix is asked and no revision is found</td>
+        <td>No, defaults to 0</td></tr>
+    <tr><td>defaultBuildNumber</td><td>the default build number to use for the first revision</td>
+        <td>No, defaults to 0</td></tr>
+    <tr><td>revSep</td><td>the revision separator to use when no matching revision is found, to separate the revision prefix from the build number</td>
+        <td>No, defaults to '.'</td></tr>
+    <tr><td>prefix</td><td>the prefix to use for the property names set (will be <i>prefix</i>.revision, <i>prefix</i>.new.revision, ...)</td>
+        <td>No, defaults to ivy</td></tr>
+</tbody>
+</table>
+<h1>Examples</h1>
+Here is how it can be used (suppose 1.3.1 is the latest version of ivy in the repository):
+<code type="xml">
+<ivy:buildnumber organisation="jayasoft" module="ivy" />
+</code>
+will set 1.3.1 as revision, 1.3.2 as new revision, 1 as build number and 2 as new build number
+
+<hr/>
+<code type="xml">
+<ivy:buildnumber organisation="jayasoft" module="ivy" revision="1.3" />
+</code>
+will set 1.3.1 as revision, 1.3.2 as new revision, 1 as build number and 2 as new build number
+
+<hr/>
+<code type="xml">
+<ivy:buildnumber organisation="jayasoft" module="ivy" revision="1.2" />
+</code>
+will set 1.2 as revision, 1.2.1 as new revision, no build number and 1 as new build number
+
+<hr/>
+<code type="xml">
+<ivy:buildnumber organisation="jayasoft" module="ivy" revision="1." />
+</code>
+will set 1.3.1 as revision, 1.4 as new revision, 3 as build number and 4 as new build number
+
+<hr/>
+<code type="xml">
+<ivy:buildnumber organisation="jayasoft" module="ivy" revision="3." />
+</code>
+will set no revision, 3.0 as new revision, no build number and 0 as new build number
+
+<hr/>
+<code type="xml">
+<ivy:buildnumber organisation="jayasoft" module="ivy" revision="1.4-RC" defaultBuildNumber="1" revSep=""/>
+</code>
+If called while no release candidate is in the repository, will set ivy.revision to 1.4-RC1. Then it will increment each time, 1.4-RC2, 1.4-RC3, and so on.
+
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/cachefileset.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/cachefileset.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/cachefileset.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/cachefileset.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+Constructs an ant fileset consisting of artifacts in ivy cache for a configuration (<span class="since">since 1.2</span>).<br/><br/>
+This is a <a href="../../doc/use/postresolvetask.html">post resolve task</a>, with all the behaviour and attributes common to all post resolve tasks. Note that this task
+does not rely on retrieve, because built fileset is made of artifacts direcly in ivy cache.<br/><br/>
+Please prefer the use of retrieve + standard ant path creation, which make your build
+more independent from ivy (once artifacts are properly retrieved, ivy is not required any more).<br/><br/>
+Built fileset is registered in ant with a given id, and can thus be used like any other ant fileset using
+refid.
+  
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>setid</td><td>the id to reference the built fileset</td>
+        <td>Yes</td></tr>
+    <tr><td>conf</td><td>a comma separated list of the configurations to put in the created path</td>
+        <td>No. Defaults to the configurations resolved by the last resolve call, or * if no resolve was explicitly called</td></tr>
+    <tr><td>type</td><td>comma separated list of artifact types to accept in the path, * for all</td><td>No. Defaults to *</td></tr>
+</tbody>
+</table>
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/cachepath.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/cachepath.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/cachepath.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/cachepath.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+Constructs an ant path consisting of artifacts in ivy cache (or origin location with depending on useOrigin setting) for a resolved module configuration.
+
+This is a <a href="../../doc/use/postresolvetask.html">post resolve task</a>, with all the behaviour and attributes common to all post resolve tasks.
+
+Please prefer the use of retrieve + standard ant path creation, which make your build more independent from ivy (once artifacts are properly retrieved, ivy is not required any more).
+
+Built path is registered in ant with a given id, and can thus be used like any other ant path using refid.
+
+<span class="since">since 1.4</span> The behaviour is like this when 'useOrigin=true':
+<ul>
+<li>if the artifact is not local, the location from within the cache is used</li>
+<li>if the artifact is a local artifact, it's original location is used</li>
+</ul>
+Note that if resolve has been called separately, the copy to the cache may have occur normally if useOrigin was not set when calling [ivy:ant:resolve]. If resolve has not been called, it will be called automatically with useOrigin set to the value specified on this task.
+  
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>pathid</td><td>the id to reference the built path</td>
+        <td>Yes</td></tr>
+    <tr><td>conf</td><td>a comma separated list of the configurations to put in the created path</td>
+        <td>No. Defaults to the configurations resolved by the last resolve call, or * if no resolve was explicitly called</td></tr>
+    <tr><td>type</td><td>comma separated list of artifact types to accept in the path, * for all (<span class="since">since 1.2</span>)</td><td>No. Defaults to *</td></tr>
+    <tr><td>useOrigin</td><td>true to use original location of local artifacts, false to use only cache locations <span class="since">since 1.4</span></td>
+        <td>No. Defaults false</td></tr>
+</tbody>
+</table>
+
+<h1>Examples</h1>
+<code type="xml">
+<cachepath pathid="default.classpath" conf="default" />
+</code>
+Construct an ant path composed of all artifacts being part of the default configuration obtained through the last resolve call.
+
+<hr/>
+
+<code type="xml">
+<cachepath pathid="default.classpath" conf="default" useOrigin="true" />
+</code>
+Same as before but will use the original location for local artifacts, and the cache location for other artifacts.
+
+<hr/>
+
+<code type="xml">
+<ivy:cachepath organisation="emma" module="emma" revision="2.0.4217" inline="true" conf="ant" pathid="emma.classpath"/>
+<taskdef resource="emma_ant.properties" classpathref="emma.classpath" /> 
+</code>
+Resolves the emma module in version 2.0.4217, constructs an ant path with the corresponding artifacts, and then define the emma tasks using this path.
+
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/ivy/trunk/src/doc/xooki/doc/use/configure.html
URL: http://svn.apache.org/viewvc/incubator/ivy/trunk/src/doc/xooki/doc/use/configure.html?view=auto&rev=488342
==============================================================================
--- incubator/ivy/trunk/src/doc/xooki/doc/use/configure.html (added)
+++ incubator/ivy/trunk/src/doc/xooki/doc/use/configure.html Mon Dec 18 09:06:07 2006
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<script type="text/javascript">var xookiConfig = {level: 2};</script>	
+	<script type="text/javascript" src="../../xooki/xooki.js"></script>
+</head>
+<body>
+	<textarea id="xooki-source">
+The configure task is used to configure ivy with an xml configuration file.<br/><br/>
+See <a href="../../doc/configuration.html">configuration</a> for details about the configuration
+file itself.<br/><br/>
+<i>Note for developers:<br/>
+After the call to this task, a reference to the configured ivy instance used by all subsequent ant tasks is put in the ant project,
+under the id "ivy.instance".</i>
+<table class="ant">
+<thead>
+    <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
+</thead>
+<tbody>
+    <tr><td>file</td><td>path to the configuration file to use</td>
+        <td rowspan="2">No. If a file is provided, url is ignored. If none are 
+        provided, then it attempts to find a file at ${ivy.conf.file}, and if
+        this file does not exist, it uses a <a href="./misc/ivy/samples/ivyconf-default.xml">default configuration file</a></td></tr>
+    <tr><td>url</td><td>url of the configuration file to use</td></tr>
+    <tr><td>host</td><td>http authentication host</td><td rowspan="4">No, unless authentication is required</td></tr>
+    <tr><td>realm</td><td>http authentication realm</td></tr>
+    <tr><td>username</td><td>http authentication user name</td></tr>
+    <tr><td>passwd</td><td>http authentication password</td></tr>
+</tbody>
+</table>
+<h2>HTTP Authentication</h2>
+<i>Note: HTTP Authentication can be used only if <a href="http://jakarta.apache.org/commons/httpclient/">commons-httpclient.jar</a> is in your classpath</i>
+If any of the url you use in ivy (especially in dependency resolvers) need http
+authentication, then you have to provide the host, realm, username and passwd
+attributes of the configure task. These settings will then be used in any
+further call to ivy tasks.<br/><br/>
+
+<b>Since 1.4:</b>
+It's also possible to configure authentication settings for multiple urls. This can be done with the &lt;credentials> subelements. See the examples for more details.
+
+<h2>Examples</h2>
+<h3>Simplest configuration</h3>
+<pre>&lt;ivy:configure /&gt;</pre>
+Use either ${ivy.conf.file} if it exists, or the <a href="./misc/ivy/samples/ivyconf-default.xml">default configuration file</a>
+<h3>Configure with a file</h3>
+<pre>&lt;ivy:configure file="myconffile.xml" /&gt;</pre>
+<h3>Configure with an url</h3>
+<pre>&lt;ivy:configure url="http://mysite.com/myconffile.xml" /&gt;</pre>
+<h3>Configure multiple URLs which require autentication</h3>
+<pre>
+&lt;ivy:configure file="path/to/my/ivyconf.xml">
+  &lt;credentials host="myhost.com" realm="My Realm" username="myuser" passwd="mypasswd" />
+  &lt;credentials host="yourhost.com" realm="Your Realm" username="myuser" passwd="myotherpasswd" />
+&lt;/ivy:configure> 
+</pre>
+	</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>