You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by xa...@apache.org on 2007/12/02 22:48:23 UTC

svn commit: r600382 - in /ant/ivy/core/trunk/doc: ./ tutorial/ tutorial/build-repository/ tutorial/log/

Author: xavier
Date: Sun Dec  2 13:48:22 2007
New Revision: 600382

URL: http://svn.apache.org/viewvc?rev=600382&view=rev
Log:
review build-repository tutorial, finish tutorials review (IVY-591)

Added:
    ant/ivy/core/trunk/doc/tutorial/build-repository/advanced.html
      - copied, changed from r600326, ant/ivy/core/trunk/doc/tutorial/build-repository/advanced1.html
    ant/ivy/core/trunk/doc/tutorial/dependence.html
      - copied unchanged from r600326, ant/ivy/core/trunk/doc/tutorial/multi-project.html
Removed:
    ant/ivy/core/trunk/doc/tutorial/build-repository/advanced1.html
    ant/ivy/core/trunk/doc/tutorial/build-repository/advanced2.html
    ant/ivy/core/trunk/doc/tutorial/multi-project.html
Modified:
    ant/ivy/core/trunk/doc/toc.json
    ant/ivy/core/trunk/doc/tutorial/build-repository.html
    ant/ivy/core/trunk/doc/tutorial/build-repository/basic.html
    ant/ivy/core/trunk/doc/tutorial/log/install-deps.txt
    ant/ivy/core/trunk/doc/tutorial/multiproject.html

Modified: ant/ivy/core/trunk/doc/toc.json
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/toc.json?rev=600382&r1=600381&r2=600382&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/toc.json (original)
+++ ant/ivy/core/trunk/doc/toc.json Sun Dec  2 13:48:22 2007
@@ -37,7 +37,7 @@
                       ]
                   },
                   {
-                    "id":"tutorial/multi-project",
+                    "id":"tutorial/dependence",
                     "title":"Project dependencies",
                     "children": [
 
@@ -63,21 +63,14 @@
                     "children": [
                         {
                           "id":"tutorial/build-repository/basic",
-                          "title":"Basic repository replication",
+                          "title":"Basic repository copy",
                           "children": [
 
                             ]
                         },
                         {
-                          "id":"tutorial/build-repository/advanced1",
-                          "title":"Advanced repository - step 1",
-                          "children": [
-
-                            ]
-                        },
-                        {
-                          "id":"tutorial/build-repository/advanced2",
-                          "title":"Advanced repository - step 2",
+                          "id":"tutorial/build-repository/advanced",
+                          "title":"Using namespaces",
                           "children": [
 
                             ]

Modified: ant/ivy/core/trunk/doc/tutorial/build-repository.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/tutorial/build-repository.html?rev=600382&r1=600381&r2=600382&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/tutorial/build-repository.html (original)
+++ ant/ivy/core/trunk/doc/tutorial/build-repository.html Sun Dec  2 13:48:22 2007
@@ -25,13 +25,14 @@
 </head>
 <body>
 	<textarea id="xooki-source">
-With the <a href="../use/install.html">install</a> ant task you are given the possibility to copy ivy descriptors and artifacts found from a resolver and publish them into another resolver.<br/> 
+The [[ant:install]] task let you copy a module or a set of modules from one repository to another one. This is very useful to build and maintain a enterprise or a team repository. If you don't want to give access to the public maven 2 repository to the developers in your team (to keep control over which modules are in use in your company or your team for instance), it can sometimes become tiresome to answer the developers request to add new modules or new versions by hand.
 
-This tutorial will show you how to build your own clean enterprise repository of ivy descriptors and modules artifacts.
-We will first use some basic ivy settings files to show how it works, and then we will use advanced features like <a href="../configuration/namespaces.html">namespaces</a> to build a real enterprise repository.
+Fortunately the [[ant:install]] task is here to help: you can use specific settings for your repository maintenance build which will be used to maintain your target enterprise repository. These settings will point to another repository (for instance the maven 2 public repository) so that you will just have to ask Ivy to install the modules you want with a simple command line.
+
+To demonstrate this we will first use some basic ivy settings files to show how it works, and then we will use the advanced [[configuration/namespaces]] feature  to demonstrate how to deal with naming mismatch between the source and target repository.
 
 <h1>The project used</h1>
-The project that we will use is quite simple.
+The project that we will use is pretty simple.
 It is composed of an ant build file, and some ivy settings files.
 
 Here are the accessible target that we will use : 
@@ -41,18 +42,20 @@
 
 Main targets:
 
- advanced                                 --> retrieve files from public repositories (ivyrep, ibiblio, ...) using namespaces
- basic                                    --> retrieve files from well formatted ivy repositories
- basic-deps                               --> retrieve files from well formatted ivy repositories with dependencies
- clean-cache                              --> clean the cache
- clean-repo                               --> clean the destination repository
- commons-lang-1-0-ibiblio-no-namespace    --> retrieve commons-lang 1.0 from ibiblio maven using no namespaces
- commons-lang-1-0-ibiblio-with-namespace  --> retrieve commons-lang 1.0 from ibiblio maven using namespaces
- maven1                                   --> retrieve commons-lang 1.0 from maven1 repo using namespaces
- maven2                                   --> retrieve files from maven2 repo using namespaces
-Default target: basic</pre></div>
+ clean-cache            --> clean the cache
+ clean-repo             --> clean the destination repository
+ maven2                 --> install module from maven 2 repository
+ maven2-deps            --> install module from maven 2 repository with dependencies
+ maven2-namespace       --> install module from maven 2 using namespaces
+ maven2-namespace-deps  --> install module with dependencies from maven2 repo using namespaces
+Default target: basic
+</pre></div>
 <br/><br/>
-The project is accessible in the [[svn:src/example/build-a-ivy-repository sources]]
+The project is accessible in the [[svn:src/example/build-a-ivy-repository src/example/build-a-ivy-repository]]
+
+Next steps:
+[[tutorial/build-repository/basic]]
+[[tutorial/build-repository/advanced]]
 
 
 	</textarea>

Copied: ant/ivy/core/trunk/doc/tutorial/build-repository/advanced.html (from r600326, ant/ivy/core/trunk/doc/tutorial/build-repository/advanced1.html)
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/tutorial/build-repository/advanced.html?p2=ant/ivy/core/trunk/doc/tutorial/build-repository/advanced.html&p1=ant/ivy/core/trunk/doc/tutorial/build-repository/advanced1.html&r1=600326&r2=600382&rev=600382&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/tutorial/build-repository/advanced1.html (original)
+++ ant/ivy/core/trunk/doc/tutorial/build-repository/advanced.html Sun Dec  2 13:48:22 2007
@@ -25,140 +25,60 @@
 </head>
 <body>
 	<textarea id="xooki-source">
+Now that you have seen how simple it is to create your own repository from an existing one, you may wonder how you can handle more complex cases, when the source and destination repositories don't follow the same naming conventions for instance. 
+
+
 <h1>On the road to a professional repository</h1>
 We will study in this section how to build a <strong>professionnal</strong> repository. What is a <strong>professionnal</strong> repository? Our vision is to say that a good quality repository must follow clear rules about projects naming and must offer corrects, usuables, configurables and verified project descriptors. In order to achieve those goals, we think that you have to build your own repository.
 We have seen in the previous example, that we could use some public repositories to begin to build our own repository. 
-Nevertheless, the result is not at all the one that was expected. Indeed there is a problem with public repositories: their partial incompatibility.
-For example, in <a href="http://ivyrep.jayasoft.org">ivyrep</a> all commons-* projects belong to the apache organisation. In both ibiblio versions, it is not the case. The same problem could appear for other projects with other repositories, it is not the debate here.
+Nevertheless, the result is not always the expected one, especially concerning the naming rules used. 
 
-To resolve some of the incompatibilities, we will use a feature introduced in ivy 1.3: [[configuration/namespaces namespaces]].
+This problem is pretty usual when you have an existing repository, and want to benefit from a large public repositories which do not follow the same naming conventions. Or simply because you find the public repository you use as a basis is not consistent enough - why all apache commons module aren't don't use the org.apache.commons organization? For historical reasons. But if you setup your own repository you may not want to suffer from history.
 
-<h1>Using namespaces</h1>
-In order to use namespaces, we first need to see what's happening when none are used on repositories that do not fit our needs.
-Let's take commons-lang 1.0 from ibiblio with a maven2 pom.
-First clean your cache and repository.
-<div class="shell"><pre>Z:\ivy-repository>ant clean-cache clean-repo</pre></div>
-Then call the good ant target : ant commons-lang-1-0-ibiblio-no-namespace
-<div class="shell"><pre>Z:\ivy-repository>ant commons-lang-1-0-ibiblio-no-namespace
-Buildfile: build.xml
-
-init-advanced:
-:: Ivy 20060125070719 - 20060125070719 :: http://ivy.jayasoft.org/ ::
-:: configuring :: file = Z:\ivy-repository\ivy-conf-advanced.xml
-
-commons-lang-1-0-ibiblio-no-namespace:
-:: installing [ commons-lang | commons-lang | 1.0 ] ::
-:: resolving dependencies ::
-        found [ commons-lang | commons-lang | 1.0 ] in ibiblio-maven2-nonamespace
-        found [ junit | junit | 3.7 ] in ibiblio-maven2-nonamespace
-:: downloading artifacts to cache ::
-downloading http://www.ibiblio.org/maven2/commons-lang/commons-lang/1.0/commons-lang-1.0.jar ...
-.............. (62kB)
-        [SUCCESSFUL ] [ commons-lang | commons-lang | 1.0 ]/commons-lang.jar[jar] (1313ms)
-downloading http://www.ibiblio.org/maven2/junit/junit/3.7/junit-3.7.jar ...
-.............
-.............. (114kB)
-        [SUCCESSFUL ] [ junit | junit | 3.7 ]/junit.jar[jar] (2360ms)
-:: installing in local-repository ::
-        published commons-lang to Z:\ivy-repository/ivy-local-repository/commons-lang/commons-lang/jars/commons-lang-1.0.jar
-        published ivy to Z:\ivy-repository/ivy-local-repository/commons-lang/commons-lang/ivys/ivy-1.0.xml
-        published junit to Z:\ivy-repository/ivy-local-repository/junit/junit/jars/junit-3.7.jar
-        published ivy to Z:\ivy-repository/ivy-local-repository/junit/junit/ivys/ivy-3.7.xml
-:: install resolution report ::
-        ---------------------------------------------------------------------
-        |                  |            modules            ||   artifacts   |
-        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
-        ---------------------------------------------------------------------
-        |      default     |   2   |   2   |   2   |   0   ||   2   |   2   |
-        ---------------------------------------------------------------------
-
-BUILD SUCCESSFUL
-Total time: 6 seconds
-Z:\ivy-repository></pre></div>
-If we take a look at the repository, we can see that we respect the ibiblio maven2 architecture, the organisation apache does not appear.
-<div class="shell"><pre>Z:\ivy-repository>dir /s /B /A:-D ivy-local-repository
-Z:\ivy-repository\ivy-local-repository\commons-lang\commons-lang\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\commons-lang\commons-lang\jars\commons-lang-1.0.jar
-Z:\ivy-repository\ivy-local-repository\junit\junit\ivys\ivy-3.7.xml
-Z:\ivy-repository\ivy-local-repository\junit\junit\jars\junit-3.7.jar</pre></div>
-If you take a look at the ivy descriptor for commons-lang, you will see that the organisation is still commons-lang. It could not be another thing as we did not do anything for it.
-<div><code type="xml">
-<ivy-module version="1.0">
-	<info organisation="commons-lang"
-		module="commons-lang"
-		revision="1.0"
-		status="integration"
-		publication="20051124062021"
-	/>
-</code></div>
+Fortunately Ivy has a very powerful answer to this kind of problem: [[configuration/namespaces namespaces]].
 
-<h2>Introduction to namespaces</h2>
-Let's see directly the result, we will have some explanations after.
-Clean your repo and cache, and call : ant commons-lang-1-0-ibiblio-with-namespace
-<div class="shell"><pre>Z:\ivy-repository>ant commons-lang-1-0-ibiblio-with-namespace
-Buildfile: build.xml
-
-init-advanced:
-:: Ivy non official version :: http://ivy.jayasoft.org/ ::
-:: configuring :: file = Z:\ivy-repository\ivy-conf-advanced.xml
-
-commons-lang-1-0-ibiblio-with-namespace:
-:: installing [ apache | commons-lang | 1.0 ] ::
-:: resolving dependencies ::
-        found [ apache | commons-lang | 1.0 ] in ibiblio-maven2
-        found [ junit | junit | 3.7 ] in ibiblio-maven2
-:: downloading artifacts to cache ::
-downloading http://www.ibiblio.org/maven2/commons-lang/commons-lang/1.0/commons-lang-1.0.jar ...
-............. (62kB)
-        [SUCCESSFUL ] [ apache | commons-lang | 1.0 ]/commons-lang.jar[jar] (1094ms)
-downloading http://www.ibiblio.org/maven2/junit/junit/3.7/junit-3.7.jar ...
-............................ (114kB)
-        [SUCCESSFUL ] [ junit | junit | 3.7 ]/junit.jar[jar] (1641ms)
-:: installing in local-repository ::
-        published commons-lang to Z:\ivy-repository/ivy-local-repository/apache/commons-lang/jars/commons-lang-1.0.jar
-        published ivy to Z:\ivy-repository/ivy-local-repository/apache/commons-lang/ivys/ivy-1.0.xml
-        published junit to Z:\ivy-repository/ivy-local-repository/junit/junit/jars/junit-3.7.jar
-        published ivy to Z:\ivy-repository/ivy-local-repository/junit/junit/ivys/ivy-3.7.xml
-:: install resolution report ::
-        ---------------------------------------------------------------------
-        |                  |            modules            ||   artifacts   |
-        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
-        ---------------------------------------------------------------------
-        |      default     |   2   |   2   |   2   |   0   ||   2   |   2   |
-        ---------------------------------------------------------------------
+<h1>Using namespaces</h1>
+If you look at the repository built with the [[tutorial/build-repository/basic previous tutorial]], you will see exactly what we were talking about: all apache commons module use their own name as organization.
 
-BUILD SUCCESSFUL
-Total time: 5 seconds</pre></div>
+So let's see what Ivy can do using namespaces (we will dig into details later):
+<div class="shell"><pre>Z:\>ant commons-lang-1-0-ibiblio-with-namespace
+[<tutorial/log/install-namespace.txt>]</pre></div>
 Now if we look at our repository, it seems to look fine.
-<div class="shell"><pre>Z:\ivy-repository>dir /s /B /A:-D ivy-local-repository
-Z:\ivy-repository\ivy-local-repository\apache\commons-lang\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-lang\jars\commons-lang-1.0.jar
-Z:\ivy-repository\ivy-local-repository\junit\junit\ivys\ivy-3.7.xml
-Z:\ivy-repository\ivy-local-repository\junit\junit\jars\junit-3.7.jar</pre></div>
-Have a look at the ivy file to see it it looks better than before. Ok, we have now our apache organisation.
+<div class="shell"><pre>Z:\>dir /s /B /A:-D myrepository\advanced
+Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml
+Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml.md5
+Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml.sha1
+Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar
+Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar.md5
+Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar.sha1</pre></div>
+We can even have a look at the commons-lang ivy file in our repo:
 <div><code type="xml">
+<?xml version="1.0" encoding="UTF-8"?>
 <ivy-module version="1.0">
 	<info organisation="apache"
 		module="commons-lang"
 		revision="1.0"
 		status="integration"
 		publication="20051124062021"
+		namespace="ibiblio-maven2"
 	/>
+
+...
 </code></div>
+Allright, we see that the organization is now 'apache'. But where did Ivy picked this up?
 <h2>How does this work ?</h2>
-If we look at the ant target commons-lang-1-0-ibiblio-with-namespace, we can see that it uses a resolver called ibiblio-maven2. 
-Let's find it... The configuration file used for this test is ivysettings-advanced.xml. This one includes ivy-maven2-ivysettings.xml where the required resolver is defined.
-Let's see it's definition :
-<code type="xml"><ibiblio	name="ibiblio-maven2" 
-                root="${ibiblio-maven2-root}" 
-                pattern="${ibiblio-maven2-pattern}"
-                m2compatible="true"
-                namespace="ibiblio-maven2"
-/></code>Ok, i see it, it is a ibiblio resolver for which we specify the root and the pattern. The important things here are the 2 other parameters.
-<ul><li><b>m2compatible</b> is a flag telling that we allow reading POMs file and make some transformations on URLs regarding the organisation name. Indeed, maven transforms organisations like "org.apache" into "some_url/org/apache" to retrieve information on ibiblio repositories.</li>
-<li><b>namespace</b> this attribute defines a domain in which same projects (meaning organsiation, module or revision) can be named whith differents kinds.</li></ul>
+Actually Ivy uses the same repository as before as source repository, with only one difference: the namespace parameter:
+<code type="xml">
+<ibiblio	name="libraries" 
+    root="${ibiblio-maven2-root}" 
+    m2compatible="true"
+    namespace="maven2"
+/>
+</code>
+
+A namespace is defined by a set of rules. These rules are based on regular expressions and tell Ivy how to convert data from the repository namespace from and to what is called the system namespace, i.e. the namespace in which Ivy runs most of the time (Ivy cache is always using the system namespace for instance).
 
-A namespace is defined by a set of rule, for ibiblio-maven2, we have declared some rules:
+For the namespace we call maven2, we have declared some rules, here is one:
 <h3>rule handling imported apache maven1 projects</h3>
 <code type="xml"><rule>	<!-- imported apache maven1 projects -->
 	<fromsystem>
@@ -176,30 +96,24 @@
 	</tosystem>
 </rule></code>
 <div class="postit"><u>Note about regular expressions usage :</u>
-In order to distinguish matching regular expressions found in organisation, module & revision the notation used prefixes the matching regular expression with the letters 'o', 'm' & 'r'.
-$o0 : the whole regular expression term in the organisation attribute
-$o1 : the first matching expression term that was marked in the organisation attribute
+In order to distinguish matching regular expressions found in organization, module and revision the notation used prefixes the matching regular expression with the letters 'o', 'm' and 'r'.
+$o0 : the whole matching value in the organization attribute
+$o1 : the first matching expression group that was marked in the organization attribute
 ...
 The same applies for modules : $m0, $m1, ...
 and for revisions : $r0, $r1, ...
 </div>
+To understand namespaces, 
 <ul>
-<li><b>fromsystem :</b> we define here that the projects defined in the system under the organisation called "apache" are transformed into the destination namespace (whose resolver it applies) into projects whose organisation is named with the module name, we don't care here about the revision. For example, the project ['apache', 'commons-lang', '1.0'] in the namespace system will be translated into ['commons-lang', 'commons-lang', '1.0'] in the ibiblio-maven2 resolver namespace.</li>
-<li><b>tosystem :</b> we define here the reverse mapping, ie how to translate <em>apache</em> projects from ibiblio into real apache projects in the namespace system. The rule here, is telling that all projects matching commons-.+ (see it as java regular expression) for their organisation name and module name are transformed into projects whose organisation is apache with the module name as it was found. The same kind of rule is applied for others apache projects like ant, etc. For example, ['ant','ant','1.6.2'] in ibiblio-maven2 namespace will become ['apache','ant','1.6.2'] int the system namespace.</li>
+<li><b>fromsystem :</b> we define here that the projects defined in the system namespace under the organization called "apache" are transformed into the destination namespace into projects whose organization is named with the module name, whatever the revision is. For example, the project apache#commons-lang;1.0  in the system namespace will be translated into commons-lang#commons-lang;1.0 in the maven2 resolver namespace.</li>
+<li><b>tosystem :</b> we define here the reverse mapping, ie how to translate <em>apache</em> projects from maven 2 repo into apache projects in the system namespace. The rule used here tells that all projects matching commons-.+ (see it as java regular expression) for their organization name and module name are transformed into projects whose organisation is apache with the module name as it was found. The same kind of rule is applied for others apache projects like ant, etc.</li>
 </ul>
-<h3>rule handling new apache projects</h3>
-<code type="xml"><rule> <!-- new apache projects -->
-    <fromsystem>
-        <src org="apache" />
-        <dest org="org.apache"/>
-    </fromsystem>
-    <tosystem>
-        <src org="org.apache" />
-        <dest org="apache" />
-    </tosystem>
-</rule></code>
-The mapping adds or removes the package 'org' before the organisation name to conform to maven2 choices.
-	</textarea>
+
+Ok, you should now get the idea behind namespace, you can now check the whole namespace settings provided in the example, and test the installation of a module and its dependencies using namespaces.
+
+Run <code>ant maven2-namespace-deps</code> and you will see the resulting repository is cleaner than the first one we built.
+
+From our experience investing in creating a namespace is worth the time it costs if you often need to add new modules or revisions of third party libraries in your own repository, where naming rules are already existing or rather strict. </textarea>
 <script type="text/javascript">xooki.postProcess();</script>
 </body>
 </html>

Modified: ant/ivy/core/trunk/doc/tutorial/build-repository/basic.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/tutorial/build-repository/basic.html?rev=600382&r1=600381&r2=600382&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/tutorial/build-repository/basic.html (original)
+++ ant/ivy/core/trunk/doc/tutorial/build-repository/basic.html Sun Dec  2 13:48:22 2007
@@ -25,202 +25,93 @@
 </head>
 <body>
 	<textarea id="xooki-source">
-We will study here two cases, corresponding to the two basics targets found in the previous build.xml project file.
+In this first step we use the [[ant:install]] task to install modules from the maven 2 repository to a file system based repository. We first install a module with no dependency, then a module with its dependencies.
 
 <h1>Basic: ivysettings.xml file used</h1>
-The ivy settings file that we will use is very simple here. It defines two resolvers, libraries and local-repository. The first one is used to retrieve the files that we want, the second is used to copy them. The second one will become our own repository.
-<ul>
-<li>ivyrep: nothing special on it, ivy files will be looked for on ivyrep and artifacts will be downloaded from 
-ibilio</li>
-<li>local-repository:  will store the found files</li>
-</ul>
+The ivy settings file that we will use is very simple here. It defines two resolvers, libraries and my-repository. The first one is used as the source, the second one as the destination. In a typical setup the second one would be configured using [[configuration:include included]] settings, used by the development team.
 
-<div class="ivy-file">
 <code type="xml">
 <ivysettings>
-    <settings defaultCache="${ivy.cache.dir}"	
-              defaultResolver="local-repository" 
-              defaultConflictManager="all" />    <!-- in order to get all revisions without any eviction -->
-    <resolvers>
-        <ivyrep name="libraries" />
-        <filesystem name="local-repository">
-            <ivy pattern="${dest.repo.dir}/[organisation]/[module]/ivys/ivy-[revision].xml"/>
-            <artifact pattern="${dest.repo.dir}/[organisation]/[module]/[type]s/[artifact]-[revision].[type]"/>
-        </filesystem>
-    </resolvers>
+	<settings	defaultCache="${ivy.cache.dir}/no-namespace"	
+			defaultResolver="libraries"
+			defaultConflictManager="all" />		<!-- in order to get all revisions without any eviction -->
+	<resolvers>
+		<ibiblio name="libraries" m2compatible="true" />
+  		<filesystem name="my-repository">
+  			<ivy pattern="${dest.repo.dir}/no-namespace/[organisation]/[module]/ivys/ivy-[revision].xml"/>
+  			<artifact pattern="${dest.repo.dir}/no-namespace/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
+  		</filesystem>
+	</resolvers>
 </ivysettings>
 </code>
-</div>
 
-<h1>basic, retrieve commons-lang 1.0</h1>
-Let's have a look at the <em>basic</em> target.
+<h1>install a simple module with no dependencies</h1>
+Let's have a look at the <em>maven2</em> target.
 <code type="xml">
-    <ivy:settings id="basic.settings"    file="${configuration-dir}/ivysettings-basic.xml"/>
-
-    <target name="basic" description="--> retrieve files from well formatted ivy repositories">
-        <ivy:install settingsRef="basic.settings" organisation="apache" module="commons-lang" revision="1.0" from="${from-resolver}" to="${to-resolver}" />
+    <target name="maven2" depends="init-ivy"
+    	description="--> install module from maven 2 repository">
+    	<ivy:install settingsRef="basic.settings" 
+    		organisation="commons-lang" module="commons-lang" revision="1.0" 
+    		from="${from.resolver}" to="${to.resolver}" />
     </target>
 </code>
-After a declaration of the basic.settings, that make the ivy initialization with the right ivysettings file, we only call the task <a href="../../use/install.html">install</a> to retrieve apache commons-lang in it's 1.0 version.
-Here is the ant call output :
-<div class="shell"><pre>Z:\ivy-repository>ant basic
-Buildfile: build.xml
+Pretty simple, we call the [[ant:install] task with the settings we have loaded using [[ant:settings ivy:settings]] as usual, we provide fromResolver (source) and toResolver (destination) using properties to ease the maintenance of the script, but it's basically the name of our resolvers: 'libraries' for the source and 'my-repository' for the destination.
 
-init-basic:
-:: Ivy 20060123130642 - 20060123130642 :: http://ivy.jayasoft.org/ ::
-:: configuring :: file = Z:\ivy-repository\ivy-conf-basic.xml
-
-basic:
-:: installing [ apache | commons-lang | 1.0 ] ::
-:: resolving dependencies ::
-        found [ apache | commons-lang | 1.0 ] in libraries
-:: downloading artifacts to cache ::
-downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-1.0.jar ...
-............ (62kB)
-        [SUCCESSFUL ] [ apache | commons-lang | 1.0 ]/commons-lang.jar[jar] (1203ms)
-:: installing in local-repository ::
-        published commons-lang to Z:\ivy-repository/ivy-local-repository/apache/commons-lang/jars/commons-lang-1.0.jar
-        published ivy to Z:\ivy-repository/ivy-local-repository/apache/commons-lang/ivys/ivy-1.0.xml
-
-BUILD SUCCESSFUL
-Total time: 2 seconds</pre></div>
-The trace tells us that the module definition was found using the "libraries" resolver and that the corresponding artifact was downloaded from ibiblio. Then both were published in the local repository.
-
-If we take a look at our repository :
-<div class="shell"><pre>Z:\ivy-repository>dir /s /B /A:-D ivy-local-repository
-Z:\ivy-repository\ivy-local-repository\apache\commons-lang\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-lang\jars\commons-lang-1.0.jar
-Z:\ivy-repository></pre>
+Here is the ant call output :
+<div class="shell"><pre>Z:\>ant maven2
+[<tutorial/log/install.txt>]
+</pre></div>
+The trace tells us that the module definition was found using the "libraries" resolver and that the corresponding artifact was downloaded from maven 2 repository. Then both were published to the filesystem repository (my-repository).
+
+Let's have a look at our repository :
+<div class="shell"><pre>Z:\>dir /s /B /A:-D myrepository
+Z:\myrepository\no-namespace\commons-lang\commons-lang\ivys\ivy-1.0.xml
+Z:\myrepository\no-namespace\commons-lang\commons-lang\ivys\ivy-1.0.xml.md5
+Z:\myrepository\no-namespace\commons-lang\commons-lang\ivys\ivy-1.0.xml.sha1
+Z:\myrepository\no-namespace\commons-lang\commons-lang\jars\commons-lang-1.0.jar
+Z:\myrepository\no-namespace\commons-lang\commons-lang\jars\commons-lang-1.0.jar.md5
+Z:\myrepository\no-namespace\commons-lang\commons-lang\jars\commons-lang-1.0.jar.sha1</pre>
 </div>
-We can see that we have started our own repository by retrieving the commons-lang 1.0 ivy file descriptor and jar.
-<h1>basic with dependencies, retrieve hibernate 2.1.8</h1>
-Now let's advance a little more by trying a module that has some dependencies. Here is the target that we will call :
+We can see that we now have the commons-lang module version 1.0 in our repository, with a generated ivy.xml file, its jar, and all the md5 and sha1 checksums for future consistency checks when developers will use this repository to resolve modules.
+
+<h1>install a module with dependencies</h1>
+Now let's say that we want to be sure all the dependencies of the module we install are available in our repository after the installation. We could either install without dependencies on a staging repository and check the missing dependencies (more control), or use transitive dependency management and ask Ivy to install everything for us (much simpler).
+
+The target called is very similar to the one described above, except that we explicitly ask for transitive installation.
 <code type="xml">
-    <target name="basic-deps" description="--> retrieve files from well formatted ivy repositories with dependencies">
-        <ivy:install settingsRef="basic.settings" organisation="hibernate" module="hibernate" revision="2.1.8" from="${from-resolver}" to="${to-resolver}" transitive="true" />
+    <target name="maven2-deps" depends="init-ivy" 
+    	description="--> install module from maven 2 repository with dependencies">
+    	<ivy:install settingsRef="basic.settings" 
+    		organisation="org.hibernate" module="hibernate" revision="3.2.5.ga" 
+    		from="${from.resolver}" to="${to.resolver}" transitive="true" />
     </target>
-</code>This target is very similar to the basic one, except it defines the transitivity mode to use. By writing, <em>transitive="true"</em>, we tell the task to retrieve the corresponding module and it's dependencies.
+</code>
 
-Ok let's call the target :
-<div class="shell"><pre>Z:\ivy-repository>ant basic-deps
-Buildfile: build.xml
-
-init-basic:
-:: Ivy 20060123130642 - 20060123130642 :: http://ivy.jayasoft.org/ ::
-:: configuring :: file = Z:\ivy-repository\ivy-conf-basic.xml
-
-basic-deps:
-:: installing [ hibernate | hibernate | 2.1.8 ] ::
-:: resolving dependencies ::
-        found [ hibernate | hibernate | 2.1.8 ] in libraries
-        found [ cglib | cglib | 2.0.2 ] in libraries
-        found [ apache | commons-collections | 2.1.1 ] in libraries
-        found [ apache | commons-logging | 1.0.4 ] in libraries
-        found [ dom4j | dom4j | 1.4 ] in libraries
-        found [ ehcache | ehcache | 0.9 ] in libraries
-        found [ odmg | odmg | 3.0 ] in libraries
-        found [ sun | jta | 1.0 ] in libraries
-        found [ apache | xalan | 2.4.0 ] in libraries
-        found [ apache | xerces | 2.4.0 ] in libraries
-        found [ sun | jdbc | 2.0 ] in libraries
-        found [ sun | jca | 1.0 ] in libraries
-        found [ sun | jaas | 1.0 ] in libraries
-        found [ c3p0 | c3p0 | 0.8.4.5 ] in libraries
-        found [ apache | commons-dbcp | 1.2.1 ] in libraries
-        found [ apache | commons-pool | 1.2 ] in libraries
-        found [ apache | commons-collections | 2.1 ] in libraries
-        found [ apache | xerces | 2.0.2 ] in libraries
-        found [ proxool | proxool | 0.8.3 ] in libraries
-        found [ jboss | jboss-cache | 1.1.1 ] in libraries
-        found [ opensymphony | oscache | 2.0 ] in libraries
-        found [ apache | commons-logging | 1.0.3 ] in libraries
-        found [ swarmcache | swarmcache | 1.0RC2 ] in libraries
-        found [ apache | commons-logging | 1.0.2 ] in libraries
-        found [ jgroups | jgroups | 2.2 ] in libraries
-:: downloading artifacts to cache ::
-downloading http://www.ibiblio.org/maven/hibernate/jars/hibernate-2.1.8.jar ...
-...........
-............
-.. (944kB)
-        [SUCCESSFUL ] [ hibernate | hibernate | 2.1.8 ]/hibernate.jar[jar] (97063ms)
-
-
-SOME MINUTES LATER .... ;-)
-
-
-downloading http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.4.jar ...
-..
-......
-.. (37kB)
-        [SUCCESSFUL ] [ apache | commons-logging | 1.0.4 ]/commons-logging.jar[jar] (24172ms)
-
-BUILD SUCCESSFUL
-Total time: 14 minutes 57 seconds
-Z:\ivy-repository></pre>
+If you call this target, you will see that Ivy installs not only the hibernate module but also its dependencies:
+<div class="shell"><pre>Z:\>ant maven2-deps
+[<tutorial/log/install-deps.txt>]
+</pre>
 </div>
 
-We can see here that Ivy has resolved hibernate 2.1.8 and 24 depending modules. If we look at the ivy file for <a href="http://ivyrep.jayasoft.org/hibernate/hibernate/ivy-2.1.8.xml">hibernate 2.1.8</a>, we can see that it defines 17 dependencies. The 7 others that ivy retrieved, were transitive ones used in direct dependent modules of hibernate.
+As you can see the installation has failed, if you look at the log you will see that there are missing artifacts on the source repository. This means that you will need to download those artifacts manually, and copy them to your destination repository to complete the installation. Fortunately Ivy use a best effort algorithm during install, so that you have everything installed but the missing artifacts.
 
-We can notice that we have retrieve 3 different revisions of apache commons-logging (1.0.2, 1.0.3, 1.0.4) and 2 revisions of commons-collections (1.2, 1.2.1). This is due to the fact that we use the "no conflict" <a href="../../configuration/conflict-managers.html">conflic manager</a> in the ivysettings file.
-We do not want to evict any modules because we are building our own repository !
+You may also have notice that Ivy has installed 2 different revisions of commons-logging (1.0.2, 1.0.4). This is due to the fact that we use the "no conflict" [[configuration/conflict-managers conflict manager]] in the ivysettings file.
 
-8 modules artifacts have not been downloaded cause they have not been found on ibiblio with the ivysettings as it is.
-We will see how to handle this problem in the advanced tutorial.
+We do not want to evict any modules because we are building our own repository. Indeed if we get both commons-logging 1.0.2 and 1.0.4 it's because some modules among the transitive dependencies of hibernate depend on 1.0.2 and other on 1.0.4. If we got only 1.0.4, the module depending on 1.0.2 would be inconsistent in your own repository (depending on a version you don't have installed). Thus developers using this module directly would run into a problem.
 
-If we look at our repository now, it starts to look to something good :
-
-<div class="shell"><pre>Z:\ivy-repository>dir /s /B /A:-D ivy-local-repository
-Z:\ivy-repository\ivy-local-repository\apache\commons-collections\ivys\ivy-2.1.1.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-collections\ivys\ivy-2.1.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-collections\jars\commons-collections-2.1.1.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-collections\jars\commons-collections-2.1.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-dbcp\ivys\ivy-1.2.1.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-dbcp\jars\commons-dbcp-1.2.1.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-lang\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-lang\jars\commons-lang-1.0.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-logging\ivys\ivy-1.0.2.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-logging\ivys\ivy-1.0.3.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-logging\ivys\ivy-1.0.4.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-logging\jars\commons-logging-1.0.2.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-logging\jars\commons-logging-1.0.3.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-logging\jars\commons-logging-1.0.4.jar
-Z:\ivy-repository\ivy-local-repository\apache\commons-pool\ivys\ivy-1.2.xml
-Z:\ivy-repository\ivy-local-repository\apache\commons-pool\jars\commons-pool-1.2.jar
-Z:\ivy-repository\ivy-local-repository\apache\xalan\ivys\ivy-2.4.0.xml
-Z:\ivy-repository\ivy-local-repository\apache\xalan\jars\xalan-2.4.0.jar
-Z:\ivy-repository\ivy-local-repository\apache\xerces\ivys\ivy-2.0.2.xml
-Z:\ivy-repository\ivy-local-repository\apache\xerces\ivys\ivy-2.4.0.xml
-Z:\ivy-repository\ivy-local-repository\apache\xerces\jars\xerces-2.0.2.jar
-Z:\ivy-repository\ivy-local-repository\apache\xerces\jars\xerces-2.4.0.jar
-Z:\ivy-repository\ivy-local-repository\apache\xerces\jars\xmlParserAPIs-2.0.2.jar
-Z:\ivy-repository\ivy-local-repository\c3p0\c3p0\ivys\ivy-0.8.4.5.xml
-Z:\ivy-repository\ivy-local-repository\c3p0\c3p0\jars\c3p0-0.8.4.5.jar
-Z:\ivy-repository\ivy-local-repository\cglib\cglib\ivys\ivy-2.0.2.xml
-Z:\ivy-repository\ivy-local-repository\cglib\cglib\jars\cglib-full-2.0.2.jar
-Z:\ivy-repository\ivy-local-repository\dom4j\dom4j\ivys\ivy-1.4.xml
-Z:\ivy-repository\ivy-local-repository\dom4j\dom4j\jars\dom4j-1.4.jar
-Z:\ivy-repository\ivy-local-repository\ehcache\ehcache\ivys\ivy-0.9.xml
-Z:\ivy-repository\ivy-local-repository\ehcache\ehcache\jars\ehcache-0.9.jar
-Z:\ivy-repository\ivy-local-repository\hibernate\hibernate\ivys\ivy-2.1.8.xml
-Z:\ivy-repository\ivy-local-repository\hibernate\hibernate\jars\hibernate-2.1.8.jar
-Z:\ivy-repository\ivy-local-repository\jboss\jboss-cache\ivys\ivy-1.1.1.xml
-Z:\ivy-repository\ivy-local-repository\jgroups\jgroups\ivys\ivy-2.2.xml
-Z:\ivy-repository\ivy-local-repository\odmg\odmg\ivys\ivy-3.0.xml
-Z:\ivy-repository\ivy-local-repository\odmg\odmg\jars\odmg-3.0.jar
-Z:\ivy-repository\ivy-local-repository\opensymphony\oscache\ivys\ivy-2.0.xml
-Z:\ivy-repository\ivy-local-repository\proxool\proxool\ivys\ivy-0.8.3.xml
-Z:\ivy-repository\ivy-local-repository\proxool\proxool\jars\proxool-0.8.3.jar
-Z:\ivy-repository\ivy-local-repository\sun\jaas\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\sun\jca\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\sun\jdbc\ivys\ivy-2.0.xml
-Z:\ivy-repository\ivy-local-repository\sun\jta\ivys\ivy-1.0.xml
-Z:\ivy-repository\ivy-local-repository\swarmcache\swarmcache\ivys\ivy-1.0RC2.xml
-Z:\ivy-repository\ivy-local-repository\swarmcache\swarmcache\jars\swarmcache-1.0RC2.jar
-
-Z:\ivy-repository></pre>
+If you now have a closer look at your repository, you will probably notice that it isn't an exact replication of the original one. Let's have a look at one module content:
+<div class="shell"><pre>Z:\>dir /s /B /A:-D myrepository\no-namespace\org.hibernate\hibernate\
+Z:\myrepository\no-namespace\org.hibernate\hibernate\ivys\ivy-3.2.5.ga.xml
+Z:\myrepository\no-namespace\org.hibernate\hibernate\ivys\ivy-3.2.5.ga.xml.md5
+Z:\myrepository\no-namespace\org.hibernate\hibernate\ivys\ivy-3.2.5.ga.xml.sha1
+Z:\myrepository\no-namespace\org.hibernate\hibernate\jars\hibernate-3.2.5.ga.jar
+Z:\myrepository\no-namespace\org.hibernate\hibernate\jars\hibernate-3.2.5.ga.jar.md5
+Z:\myrepository\no-namespace\org.hibernate\hibernate\jars\hibernate-3.2.5.ga.jar.sha1</pre>
 </div>
 
-	</textarea>
+As you can see there is no pom here (pom is the module metadata format used by maven 2, available on the maven 2 repository). Instead you can see there's an ivy file, which is actually the original hibernate pom converted into an ivy file. So now you have a true Ivy repository with ivy files, where you can use the full power of Ivy if you want to adjust the module metadata (module configurations, fine grain exclusions and transitivity control, per module conflict manager, ...).
+
+Ok, enough for this simple repository installation, the [[tutorial/build-repository/advanced next tutorial]] will now show how you can deal with more complex cases where your source and destination repositories do not follow the same naming conventions.</textarea>
 <script type="text/javascript">xooki.postProcess();</script>
 </body>
 </html>

Modified: ant/ivy/core/trunk/doc/tutorial/log/install-deps.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/tutorial/log/install-deps.txt?rev=600382&r1=600381&r2=600382&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/tutorial/log/install-deps.txt (original)
+++ ant/ivy/core/trunk/doc/tutorial/log/install-deps.txt Sun Dec  2 13:48:22 2007
@@ -160,64 +160,64 @@
 [ivy:install] .. (0kB)
 [ivy:install]   [SUCCESSFUL ] xerces#xercesImpl;2.6.2/xercesImpl.jar[jar] (6906ms)
 [ivy:install] :: installing in my-repository ::
-[ivy:install]   published hibernate to /home/xavier/ivy/myrepository/no-namespace/org.hibernate/hibernate/jars/hibernate-3.2.5.ga.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/org.hibernate/hibernate/ivys/ivy-3.2.5.ga.xml
-[ivy:install]   published ehcache to /home/xavier/ivy/myrepository/no-namespace/net.sf.ehcache/ehcache/jars/ehcache-1.2.3.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/net.sf.ehcache/ehcache/ivys/ivy-1.2.3.xml
+[ivy:install]   published hibernate to myrepository/no-namespace/org.hibernate/hibernate/jars/hibernate-3.2.5.ga.jar
+[ivy:install]   published ivy to myrepository/no-namespace/org.hibernate/hibernate/ivys/ivy-3.2.5.ga.xml
+[ivy:install]   published ehcache to myrepository/no-namespace/net.sf.ehcache/ehcache/jars/ehcache-1.2.3.jar
+[ivy:install]   published ivy to myrepository/no-namespace/net.sf.ehcache/ehcache/ivys/ivy-1.2.3.xml
 [ivy:install] missing artifact javax.transaction#jta;1.0.1B/jta.jar[jar]:
-[ivy:install]   /home/xavier/ivy/cache/no-namespace/javax.transaction/jta/jars/jta-1.0.1B.jar file does not exist
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/javax.transaction/jta/ivys/ivy-1.0.1B.xml
-[ivy:install]   published commons-logging to /home/xavier/ivy/myrepository/no-namespace/commons-logging/commons-logging/jars/commons-logging-1.0.4.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/commons-logging/commons-logging/ivys/ivy-1.0.4.xml
-[ivy:install]   published asm-attrs to /home/xavier/ivy/myrepository/no-namespace/asm/asm-attrs/jars/asm-attrs-1.5.3.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/asm/asm-attrs/ivys/ivy-1.5.3.xml
-[ivy:install]   published dom4j to /home/xavier/ivy/myrepository/no-namespace/dom4j/dom4j/jars/dom4j-1.6.1.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/dom4j/dom4j/ivys/ivy-1.6.1.xml
-[ivy:install]   published antlr to /home/xavier/ivy/myrepository/no-namespace/antlr/antlr/jars/antlr-2.7.6.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/antlr/antlr/ivys/ivy-2.7.6.xml
-[ivy:install]   published cglib to /home/xavier/ivy/myrepository/no-namespace/cglib/cglib/jars/cglib-2.1_3.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/cglib/cglib/ivys/ivy-2.1_3.xml
-[ivy:install]   published asm to /home/xavier/ivy/myrepository/no-namespace/asm/asm/jars/asm-1.5.3.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/asm/asm/ivys/ivy-1.5.3.xml
-[ivy:install]   published commons-collections to /home/xavier/ivy/myrepository/no-namespace/commons-collections/commons-collections/jars/commons-collections-2.1.1.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/commons-collections/commons-collections/ivys/ivy-2.1.1.xml
-[ivy:install]   published commons-collections to /home/xavier/ivy/myrepository/no-namespace/commons-collections/commons-collections/jars/commons-collections-2.1.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/commons-collections/commons-collections/ivys/ivy-2.1.xml
-[ivy:install]   published ant to /home/xavier/ivy/myrepository/no-namespace/ant/ant/jars/ant-1.6.5.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/ant/ant/ivys/ivy-1.6.5.xml
-[ivy:install]   published swarmcache to /home/xavier/ivy/myrepository/no-namespace/swarmcache/swarmcache/jars/swarmcache-1.0RC2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/swarmcache/swarmcache/ivys/ivy-1.0RC2.xml
-[ivy:install]   published jboss-cache to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-cache/jars/jboss-cache-1.2.2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-cache/ivys/ivy-1.2.2.xml
-[ivy:install]   published jgroups-all to /home/xavier/ivy/myrepository/no-namespace/jgroups/jgroups-all/jars/jgroups-all-2.2.8.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jgroups/jgroups-all/ivys/ivy-2.2.8.xml
-[ivy:install]   published c3p0 to /home/xavier/ivy/myrepository/no-namespace/c3p0/c3p0/jars/c3p0-0.9.1.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/c3p0/c3p0/ivys/ivy-0.9.1.xml
+[ivy:install]   cache/no-namespace/javax.transaction/jta/jars/jta-1.0.1B.jar file does not exist
+[ivy:install]   published ivy to myrepository/no-namespace/javax.transaction/jta/ivys/ivy-1.0.1B.xml
+[ivy:install]   published commons-logging to myrepository/no-namespace/commons-logging/commons-logging/jars/commons-logging-1.0.4.jar
+[ivy:install]   published ivy to myrepository/no-namespace/commons-logging/commons-logging/ivys/ivy-1.0.4.xml
+[ivy:install]   published asm-attrs to myrepository/no-namespace/asm/asm-attrs/jars/asm-attrs-1.5.3.jar
+[ivy:install]   published ivy to myrepository/no-namespace/asm/asm-attrs/ivys/ivy-1.5.3.xml
+[ivy:install]   published dom4j to myrepository/no-namespace/dom4j/dom4j/jars/dom4j-1.6.1.jar
+[ivy:install]   published ivy to myrepository/no-namespace/dom4j/dom4j/ivys/ivy-1.6.1.xml
+[ivy:install]   published antlr to myrepository/no-namespace/antlr/antlr/jars/antlr-2.7.6.jar
+[ivy:install]   published ivy to myrepository/no-namespace/antlr/antlr/ivys/ivy-2.7.6.xml
+[ivy:install]   published cglib to myrepository/no-namespace/cglib/cglib/jars/cglib-2.1_3.jar
+[ivy:install]   published ivy to myrepository/no-namespace/cglib/cglib/ivys/ivy-2.1_3.xml
+[ivy:install]   published asm to myrepository/no-namespace/asm/asm/jars/asm-1.5.3.jar
+[ivy:install]   published ivy to myrepository/no-namespace/asm/asm/ivys/ivy-1.5.3.xml
+[ivy:install]   published commons-collections to myrepository/no-namespace/commons-collections/commons-collections/jars/commons-collections-2.1.1.jar
+[ivy:install]   published ivy to myrepository/no-namespace/commons-collections/commons-collections/ivys/ivy-2.1.1.xml
+[ivy:install]   published commons-collections to myrepository/no-namespace/commons-collections/commons-collections/jars/commons-collections-2.1.jar
+[ivy:install]   published ivy to myrepository/no-namespace/commons-collections/commons-collections/ivys/ivy-2.1.xml
+[ivy:install]   published ant to myrepository/no-namespace/ant/ant/jars/ant-1.6.5.jar
+[ivy:install]   published ivy to myrepository/no-namespace/ant/ant/ivys/ivy-1.6.5.xml
+[ivy:install]   published swarmcache to myrepository/no-namespace/swarmcache/swarmcache/jars/swarmcache-1.0RC2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/swarmcache/swarmcache/ivys/ivy-1.0RC2.xml
+[ivy:install]   published jboss-cache to myrepository/no-namespace/jboss/jboss-cache/jars/jboss-cache-1.2.2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jboss/jboss-cache/ivys/ivy-1.2.2.xml
+[ivy:install]   published jgroups-all to myrepository/no-namespace/jgroups/jgroups-all/jars/jgroups-all-2.2.8.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jgroups/jgroups-all/ivys/ivy-2.2.8.xml
+[ivy:install]   published c3p0 to myrepository/no-namespace/c3p0/c3p0/jars/c3p0-0.9.1.jar
+[ivy:install]   published ivy to myrepository/no-namespace/c3p0/c3p0/ivys/ivy-0.9.1.xml
 [ivy:install] missing artifact javax.security#jacc;1.0/jacc.jar[jar]:
-[ivy:install]   /home/xavier/ivy/cache/no-namespace/javax.security/jacc/jars/jacc-1.0.jar file does not exist
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/javax.security/jacc/ivys/ivy-1.0.xml
-[ivy:install]   published oscache to /home/xavier/ivy/myrepository/no-namespace/opensymphony/oscache/jars/oscache-2.1.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/opensymphony/oscache/ivys/ivy-2.1.xml
-[ivy:install]   published proxool to /home/xavier/ivy/myrepository/no-namespace/proxool/proxool/jars/proxool-0.8.3.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/proxool/proxool/ivys/ivy-0.8.3.xml
-[ivy:install]   published commons-logging to /home/xavier/ivy/myrepository/no-namespace/commons-logging/commons-logging/jars/commons-logging-1.0.2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/commons-logging/commons-logging/ivys/ivy-1.0.2.xml
-[ivy:install]   published jboss-system to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-system/jars/jboss-system-4.0.2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-system/ivys/ivy-4.0.2.xml
-[ivy:install]   published jboss-common to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-common/jars/jboss-common-4.0.2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-common/ivys/ivy-4.0.2.xml
-[ivy:install]   published jboss-minimal to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-minimal/jars/jboss-minimal-4.0.2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-minimal/ivys/ivy-4.0.2.xml
-[ivy:install]   published jboss-j2se to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-j2se/jars/jboss-j2se-200504122039.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jboss/jboss-j2se/ivys/ivy-200504122039.xml
-[ivy:install]   published concurrent to /home/xavier/ivy/myrepository/no-namespace/concurrent/concurrent/jars/concurrent-1.3.4.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/concurrent/concurrent/ivys/ivy-1.3.4.xml
-[ivy:install]   published jgroups-all to /home/xavier/ivy/myrepository/no-namespace/jgroups/jgroups-all/jars/jgroups-all-2.2.7.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/jgroups/jgroups-all/ivys/ivy-2.2.7.xml
-[ivy:install]   published webdavlib to /home/xavier/ivy/myrepository/no-namespace/slide/webdavlib/jars/webdavlib-2.0.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/slide/webdavlib/ivys/ivy-2.0.xml
-[ivy:install]   published xercesImpl to /home/xavier/ivy/myrepository/no-namespace/xerces/xercesImpl/jars/xercesImpl-2.6.2.jar
-[ivy:install]   published ivy to /home/xavier/ivy/myrepository/no-namespace/xerces/xercesImpl/ivys/ivy-2.6.2.xml
+[ivy:install]   cache/no-namespace/javax.security/jacc/jars/jacc-1.0.jar file does not exist
+[ivy:install]   published ivy to myrepository/no-namespace/javax.security/jacc/ivys/ivy-1.0.xml
+[ivy:install]   published oscache to myrepository/no-namespace/opensymphony/oscache/jars/oscache-2.1.jar
+[ivy:install]   published ivy to myrepository/no-namespace/opensymphony/oscache/ivys/ivy-2.1.xml
+[ivy:install]   published proxool to myrepository/no-namespace/proxool/proxool/jars/proxool-0.8.3.jar
+[ivy:install]   published ivy to myrepository/no-namespace/proxool/proxool/ivys/ivy-0.8.3.xml
+[ivy:install]   published commons-logging to myrepository/no-namespace/commons-logging/commons-logging/jars/commons-logging-1.0.2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/commons-logging/commons-logging/ivys/ivy-1.0.2.xml
+[ivy:install]   published jboss-system to myrepository/no-namespace/jboss/jboss-system/jars/jboss-system-4.0.2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jboss/jboss-system/ivys/ivy-4.0.2.xml
+[ivy:install]   published jboss-common to myrepository/no-namespace/jboss/jboss-common/jars/jboss-common-4.0.2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jboss/jboss-common/ivys/ivy-4.0.2.xml
+[ivy:install]   published jboss-minimal to myrepository/no-namespace/jboss/jboss-minimal/jars/jboss-minimal-4.0.2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jboss/jboss-minimal/ivys/ivy-4.0.2.xml
+[ivy:install]   published jboss-j2se to myrepository/no-namespace/jboss/jboss-j2se/jars/jboss-j2se-200504122039.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jboss/jboss-j2se/ivys/ivy-200504122039.xml
+[ivy:install]   published concurrent to myrepository/no-namespace/concurrent/concurrent/jars/concurrent-1.3.4.jar
+[ivy:install]   published ivy to myrepository/no-namespace/concurrent/concurrent/ivys/ivy-1.3.4.xml
+[ivy:install]   published jgroups-all to myrepository/no-namespace/jgroups/jgroups-all/jars/jgroups-all-2.2.7.jar
+[ivy:install]   published ivy to myrepository/no-namespace/jgroups/jgroups-all/ivys/ivy-2.2.7.xml
+[ivy:install]   published webdavlib to myrepository/no-namespace/slide/webdavlib/jars/webdavlib-2.0.jar
+[ivy:install]   published ivy to myrepository/no-namespace/slide/webdavlib/ivys/ivy-2.0.xml
+[ivy:install]   published xercesImpl to myrepository/no-namespace/xerces/xercesImpl/jars/xercesImpl-2.6.2.jar
+[ivy:install]   published ivy to myrepository/no-namespace/xerces/xercesImpl/ivys/ivy-2.6.2.xml
 [ivy:install] :: install resolution report ::
         ---------------------------------------------------------------------
         |                  |            modules            ||   artifacts   |
@@ -227,6 +227,6 @@
         ---------------------------------------------------------------------
 
 BUILD FAILED
-/home/xavier/ivy/build.xml:80: Problem happened while installing modules - see output for details
+build.xml:80: Problem happened while installing modules - see output for details
 
 Total time: 2 minutes 49 seconds

Modified: ant/ivy/core/trunk/doc/tutorial/multiproject.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/tutorial/multiproject.html?rev=600382&r1=600381&r2=600382&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/tutorial/multiproject.html (original)
+++ ant/ivy/core/trunk/doc/tutorial/multiproject.html Sun Dec  2 13:48:22 2007
@@ -56,8 +56,8 @@
 <li>[[svn:src/example/multi-project/build.xml build.xml]]</li>This is 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>[[svn:src/example//multi-project/common/common.xml common.xml]]</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>[[svn:src/example//multi-project/common/build.properties build.properties]]</li>some properties common to all projects
+<li>[[svn:src/example/multi-project/common/common.xml common.xml]]</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>[[svn:src/example/multi-project/common/build.properties build.properties]]</li>some properties common to all projects
 </ul>
 </li>
 <li>projects</li>