Basic repository copy


In this first step we use the 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.

Basic: ivysettings.xml file used

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 included settings, used by the development team.
<ivysettings>
<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>

install a simple module with no dependencies

Let's have a look at the maven2 target.
    <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>
Pretty simple, we call the [[ant:install] task with the settings we have loaded using 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.

Here is the ant call output :
Z:\>ant maven2
Buildfile: build.xml load-ivy: init-ivy: maven2: [ivy:install] :: loading settings :: url = jar:file://home/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml [ivy:install] :: Ivy 2.0.0-beta1-local-20071130005044 - 20071130005044 :: http://ant.apache.org/ivy/ :: :: loading settings :: file = /home/xavier/ivy/settings/ivysettings-advanced.xml [ivy:install] :: installing commons-lang#commons-lang;1.0 :: [ivy:install] :: resolving dependencies :: [ivy:install] found commons-lang#commons-lang;1.0 in libraries [ivy:install] :: downloading artifacts to cache :: [ivy:install] downloading http://repo1.maven.org/maven2/commons-lang/commons-lang/1.0/commons-lang-1.0.jar ... [ivy:install] ............. (62kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] commons-lang#commons-lang;1.0/commons-lang.jar[jar] (2464ms) [ivy:install] :: installing in my-repository :: [ivy:install] published commons-lang to /home/xavier/ivy/myrepository/no-namespace/commons-lang/commons-lang/jars/commons-lang-1.0.jar [ivy:install] published ivy to /home/xavier/ivy/myrepository/no-namespace/commons-lang/commons-lang/ivys/ivy-1.0.xml [ivy:install] :: install resolution report :: --------------------------------------------------------------------- | | modules || artifacts | | conf | number| search|dwnlded|evicted|| number|dwnlded| --------------------------------------------------------------------- | default | 1 | 1 | 0 | 0 || 1 | 1 | --------------------------------------------------------------------- BUILD SUCCESSFUL
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 :
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
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.

install a module with dependencies

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.
    <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>
If you call this target, you will see that Ivy installs not only the hibernate module but also its dependencies:
Z:\>ant maven2-deps
Buildfile: build.xml load-ivy: init-ivy: maven2-deps: [ivy:install] :: loading settings :: url = jar:file://home/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml [ivy:install] :: Ivy 2.0.0-beta1-local-20071130005044 - 20071130005044 :: http://ant.apache.org/ivy/ :: :: loading settings :: file = /home/xavier/ivy/settings/ivysettings-advanced.xml [ivy:install] :: installing org.hibernate#hibernate;3.2.5.ga :: [ivy:install] :: resolving dependencies :: [ivy:install] found org.hibernate#hibernate;3.2.5.ga in libraries [ivy:install] found net.sf.ehcache#ehcache;1.2.3 in libraries [ivy:install] found commons-logging#commons-logging;1.0.4 in libraries [ivy:install] found commons-collections#commons-collections;2.1 in libraries [ivy:install] found javax.transaction#jta;1.0.1B in libraries [ivy:install] found asm#asm-attrs;1.5.3 in libraries [ivy:install] found dom4j#dom4j;1.6.1 in libraries [ivy:install] found antlr#antlr;2.7.6 in libraries [ivy:install] found cglib#cglib;2.1_3 in libraries [ivy:install] found asm#asm;1.5.3 in libraries [ivy:install] found commons-collections#commons-collections;2.1.1 in libraries [ivy:install] found ant#ant;1.6.5 in libraries [ivy:install] found swarmcache#swarmcache;1.0RC2 in libraries [ivy:install] found commons-logging#commons-logging;1.0.2 in libraries [ivy:install] found jgroups#jgroups-all;2.2.8 in libraries [ivy:install] found jboss#jboss-cache;1.2.2 in libraries [ivy:install] found jboss#jboss-system;4.0.2 in libraries [ivy:install] found jboss#jboss-common;4.0.2 in libraries [ivy:install] found slide#webdavlib;2.0 in libraries [ivy:install] found xerces#xercesImpl;2.6.2 in libraries [ivy:install] found jboss#jboss-minimal;4.0.2 in libraries [ivy:install] found jboss#jboss-j2se;200504122039 in libraries [ivy:install] found concurrent#concurrent;1.3.4 in libraries [ivy:install] found jgroups#jgroups-all;2.2.7 in libraries [ivy:install] found c3p0#c3p0;0.9.1 in libraries [ivy:install] found javax.security#jacc;1.0 in libraries [ivy:install] found opensymphony#oscache;2.1 in libraries [ivy:install] found proxool#proxool;0.8.3 in libraries [ivy:install] :: downloading artifacts to cache :: [ivy:install] downloading http://repo1.maven.org/maven2/org/hibernate/hibernate/3.2.5.ga/hibernate-3.2.5.ga.jar ... [ivy:install] ............................. [ivy:install] .............. (2202kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] org.hibernate#hibernate;3.2.5.ga/hibernate.jar[jar] (31105ms) [ivy:install] downloading http://repo1.maven.org/maven2/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar ... [ivy:install] ................. [ivy:install] ............. (203kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] net.sf.ehcache#ehcache;1.2.3/ehcache.jar[jar] (3223ms) [ivy:install] downloading http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar ... [ivy:install] ....... (37kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] commons-logging#commons-logging;1.0.4/commons-logging.jar[jar] (1176ms) [ivy:install] downloading http://repo1.maven.org/maven2/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar ... [ivy:install] ..... (16kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] asm#asm-attrs;1.5.3/asm-attrs.jar[jar] (872ms) [ivy:install] downloading http://repo1.maven.org/maven2/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar ... [ivy:install] ...................... [ivy:install] .. (306kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] dom4j#dom4j;1.6.1/dom4j.jar[jar] (3895ms) [ivy:install] downloading http://repo1.maven.org/maven2/antlr/antlr/2.7.6/antlr-2.7.6.jar ... [ivy:install] ............... [ivy:install] ............ (433kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] antlr#antlr;2.7.6/antlr.jar[jar] (6909ms) [ivy:install] downloading http://repo1.maven.org/maven2/cglib/cglib/2.1_3/cglib-2.1_3.jar ... [ivy:install] ................. [ivy:install] .... (275kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] cglib#cglib;2.1_3/cglib.jar[jar] (4062ms) [ivy:install] downloading http://repo1.maven.org/maven2/asm/asm/1.5.3/asm-1.5.3.jar ... [ivy:install] ...... (25kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] asm#asm;1.5.3/asm.jar[jar] (980ms) [ivy:install] downloading http://repo1.maven.org/maven2/commons-collections/commons-collections/2.1.1/commons-collections-2.1.1.jar ... [ivy:install] .............. [ivy:install] .......... (171kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] commons-collections#commons-collections;2.1.1/commons-collections.jar[jar] (3476ms) [ivy:install] downloading http://repo1.maven.org/maven2/commons-collections/commons-collections/2.1/commons-collections-2.1.jar ... [ivy:install] .............. [ivy:install] ......... (161kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] commons-collections#commons-collections;2.1/commons-collections.jar[jar] (3931ms) [ivy:install] downloading http://repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ... [ivy:install] .............. [ivy:install] ........... (1009kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] ant#ant;1.6.5/ant.jar[jar] (20564ms) [ivy:install] downloading http://repo1.maven.org/maven2/swarmcache/swarmcache/1.0RC2/swarmcache-1.0RC2.jar ... [ivy:install] ....... (29kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] swarmcache#swarmcache;1.0RC2/swarmcache.jar[jar] (1985ms) [ivy:install] downloading http://repo1.maven.org/maven2/jboss/jboss-cache/1.2.2/jboss-cache-1.2.2.jar ... [ivy:install] ............... [ivy:install] .. (365kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jboss#jboss-cache;1.2.2/jboss-cache.jar[jar] (6026ms) [ivy:install] downloading http://repo1.maven.org/maven2/jgroups/jgroups-all/2.2.8/jgroups-all-2.2.8.jar ... [ivy:install] ............. [ivy:install] .......... (1573kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jgroups#jgroups-all;2.2.8/jgroups-all.jar[jar] (17176ms) [ivy:install] downloading http://repo1.maven.org/maven2/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar ... [ivy:install] .................................. [ivy:install] ............ (594kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] c3p0#c3p0;0.9.1/c3p0.jar[jar] (4332ms) [ivy:install] downloading http://repo1.maven.org/maven2/opensymphony/oscache/2.1/oscache-2.1.jar ... [ivy:install] ................. (111kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] opensymphony#oscache;2.1/oscache.jar[jar] (1676ms) [ivy:install] downloading http://repo1.maven.org/maven2/proxool/proxool/0.8.3/proxool-0.8.3.jar ... [ivy:install] ................................... [ivy:install] ........................... (464kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] proxool#proxool;0.8.3/proxool.jar[jar] (3476ms) [ivy:install] downloading http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.2/commons-logging-1.0.2.jar ... [ivy:install] ....... (25kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] commons-logging#commons-logging;1.0.2/commons-logging.jar[jar] (794ms) [ivy:install] downloading http://repo1.maven.org/maven2/jboss/jboss-system/4.0.2/jboss-system-4.0.2.jar ... [ivy:install] ................................ (227kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jboss#jboss-system;4.0.2/jboss-system.jar[jar] (1937ms) [ivy:install] downloading http://repo1.maven.org/maven2/jboss/jboss-common/4.0.2/jboss-common-4.0.2.jar ... [ivy:install] ................................ [ivy:install] ............................ (457kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jboss#jboss-common;4.0.2/jboss-common.jar[jar] (3589ms) [ivy:install] downloading http://repo1.maven.org/maven2/jboss/jboss-minimal/4.0.2/jboss-minimal-4.0.2.jar ... [ivy:install] ......................... (163kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jboss#jboss-minimal;4.0.2/jboss-minimal.jar[jar] (1838ms) [ivy:install] downloading http://repo1.maven.org/maven2/jboss/jboss-j2se/200504122039/jboss-j2se-200504122039.jar ... [ivy:install] ................................. [ivy:install] .............. (350kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jboss#jboss-j2se;200504122039/jboss-j2se.jar[jar] (2806ms) [ivy:install] downloading http://repo1.maven.org/maven2/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar ... [ivy:install] ........................... (184kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] concurrent#concurrent;1.3.4/concurrent.jar[jar] (1748ms) [ivy:install] downloading http://repo1.maven.org/maven2/jgroups/jgroups-all/2.2.7/jgroups-all-2.2.7.jar ... [ivy:install] ............................... [ivy:install] ........................ (1613kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] jgroups#jgroups-all;2.2.7/jgroups-all.jar[jar] (10938ms) [ivy:install] downloading http://repo1.maven.org/maven2/slide/webdavlib/2.0/webdavlib-2.0.jar ... [ivy:install] .................. (128kB) [ivy:install] .. (0kB) [ivy:install] [SUCCESSFUL ] slide#webdavlib;2.0/webdavlib.jar[jar] (1526ms) [ivy:install] downloading http://repo1.maven.org/maven2/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar ... [ivy:install] ................................ [ivy:install] ...... (986kB) [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 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] 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] 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 | | conf | number| search|dwnlded|evicted|| number|dwnlded| --------------------------------------------------------------------- | default | 28 | 28 | 0 | 0 || 28 | 26 | --------------------------------------------------------------------- BUILD FAILED build.xml:80: Problem happened while installing modules - see output for details Total time: 2 minutes 49 seconds
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.

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" conflict manager in the ivysettings file.

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 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:
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
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 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.