Publique un artefacto Maven en un repositorio local de Ivy, recursivamente con sus dependencias

Tengo que reflejar un conjunto de dependencias en el repositorio de Ivy local de mi empresa.

Actualmente necesito publicarHibernate Spatial 4.0-M1. Desde mi proyecto Eclipse, solo puedo resolver las dependencias de Ivy si habilito el repositorio remoto<ibiblio name="hibernate-spatial" m2compatible="true" root="http://www.hibernatespatial.org/repository"/> (y excluye algunas dependencias dedependencies.xml), que otros desarrolladores no tienen, ya que solo se recuperan de LAN.

Así que terminé poniendo el JAR en el directorio de publicación, convertí el POM oficial de HS a Ivy usando una tarea Ant adecuada y terminé con lo siguientedependencies.xml

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="1.0" xmlns:m="http://ant.apache.org/ivy/maven">
    <info organisation="org.hibernate"
        module="hibernate-spatial"
        revision="4.0-M1"
        status="release"
        publication="20130904175525"
    >
        <description homepage="" />
    </info>
    <configurations>
        <conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf" extends="runtime,master"/>
        <conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
        <conf name="compile" visibility="public" description="this is the default scope, used if none is specified. Compile dependencies are available in all classpaths."/>
        <conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
        <conf name="runtime" visibility="public" description="this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath." extends="compile"/>
        <conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases." extends="runtime"/>
        <conf name="system" visibility="public" description="this scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repository."/>
        <conf name="sources" visibility="public" description="this configuration contains the source artifact of this module, if any."/>
        <conf name="javadoc" visibility="public" description="this configuration contains the javadoc artifact of this module, if any."/>
        <conf name="optional" visibility="public" description="contains all optional dependencies"/>
    </configurations>
    <publications>
        <artifact name="hibernate-spatial" type="jar" ext="jar" conf="compile"/>
    </publications>
    <dependencies>
        <dependency org="jaxen" name="jaxen" rev="1.1" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="junit" name="junit" rev="4.8.2" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="commons-logging" name="commons-logging-api" rev="99.0-does-not-exist" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="postgresql" name="postgresql" rev="8.4-701.jdbc4" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
        <dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.1" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="javax.validation" name="validation-api" rev="1.0.0.GA" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="dom4j" name="dom4j" rev="1.6.1" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
        <!--<dependency org="org.postgis" name="postgis-jdbc" rev="1.5.3" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>-->
        <dependency org="org.hibernate" name="hibernate-validator" rev="4.2.0.Final" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="commons-dbcp" name="commons-dbcp" rev="1.4" force="true" conf="test->runtime(*),master(*)"/>
        <!--<dependency org="org.jboss.logging" name="jboss-logging" rev="3.1.0.CR2" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>-->
        <dependency org="com.fasterxml" name="classmate" rev="0.5.4" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="commons-logging" name="commons-logging" rev="99.0-does-not-exist" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="org.jboss" name="jandex" rev="1.0.3.Final" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="org.hibernate" name="hibernate-core" rev="4.0.0.Final" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
        <dependency org="org.hibernate" name="hibernate-testing" rev="4.0.0.Final" force="true" conf="test->runtime(*),master(*)"/>
        <dependency org="com.vividsolutions" name="jts" rev="1.12" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
        <dependency org="com.h2database" name="h2" rev="1.2.145" force="true" conf="test->runtime(*),master(*)"/>
        <!--<dependency org="javassist" name="javassist" rev="3.12.1.GA" force="true" conf="test->runtime(*),master(*)"/>-->
    </dependencies>
</ivy-module>

Ejecuto la siguiente tarea Ant:

<target name="ivy-local-release" depends="ivy-config" description="Locally publish a file">
    <ivy:resolve />
    <ivy:publish artifactspattern="${ivy.install.dir}/publish/[artifact]-[revision].[ext]"  resolver="local" status="release" overwrite="true" />
</target>

y me sale la siguiente salida:

ivy-config:
[ivy:configure] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = C:\Program Files (x86)\Ivy\ivy-settings.xml
ivy-local-release:
[ivy:resolve] :: resolving dependencies :: org.hibernate#hibernate-spatial;4.0-M1
[ivy:resolve]   confs: [default, master, compile, provided, runtime, test, system, sources, javadoc, optional]
[ivy:resolve]   found postgresql#postgresql;8.4-701.jdbc4 in maven2
[ivy:resolve]   found dom4j#dom4j;1.6.1 in local
[ivy:resolve]   found xml-apis#xml-apis;1.0.b2 in maven2
[ivy:resolve]   found org.hibernate#hibernate-core;4.0.0.Final in maven2
[ivy:resolve]   found commons-collections#commons-collections;3.2.1 in local
[ivy:resolve]   found antlr#antlr;2.7.7 in local
[ivy:resolve]   found org.jboss.spec.javax.transaction#jboss-transaction-api_1.1_spec;1.0.0.Final in local
[ivy:resolve]   found org.hibernate.javax.persistence#hibernate-jpa-2.0-api;1.0.1.Final in maven2
[ivy:resolve]   found org.jboss.logging#jboss-logging;3.1.0.CR2 in maven2

[...]

[ivy:resolve]   ==== jboss: tried
[ivy:resolve]     https://repository.jboss.org/nexus/content/repositories/releases/gnu-getopt/getopt/1.0.13/getopt-1.0.13.pom
[ivy:resolve]     -- artifact gnu-getopt#getopt;1.0.13!getopt.jar:
[ivy:resolve]     https://repository.jboss.org/nexus/content/repositories/releases/gnu-getopt/getopt/1.0.13/getopt-1.0.13.jar
[ivy:resolve]   ==== shared: tried
[ivy:resolve]     R:/repository/gnu-getopt/getopt/1.0.13/ivys/ivy.xml
[ivy:resolve]     -- artifact gnu-getopt#getopt;1.0.13!getopt.jar:
[ivy:resolve]     R:/repository/gnu-getopt/getopt/1.0.13/jars/getopt.jar
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       ::          UNRESOLVED DEPENDENCIES         ::
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       :: commons-logging#commons-logging-api;99.0-does-not-exist: not found
[ivy:resolve]       :: commons-logging#commons-logging;99.0-does-not-exist: not found
[ivy:resolve]       :: commons-httpclient#commons-httpclient;3.1-jbossorg-1: not found
[ivy:resolve]       :: org.hornetq#hornetq-core;working@antonioanzivino: not found
[ivy:resolve]       :: org.jboss.netty#netty;working@antonioanzivino: not found
[ivy:resolve]       :: jacorb#jacorb;2.3.1jboss.patch01-brew: not found
[ivy:resolve]       :: jacorb#idl;2.3.1jboss.patch01-brew: not found
[ivy:resolve]       :: org.jboss.logmanager#jboss-logmanager;working@antonioanzivino: not found
[ivy:resolve]       :: org.jboss.integration#jboss-transaction-spi;working@antonioanzivino: not found
[ivy:resolve]       :: org.jboss.spec.javax.ejb#jboss-ejb-api_3.1_spec;working@antonioanzivino: not found
[ivy:resolve]       :: org.jboss.spec.javax.servlet#jboss-servlet-api_3.0_spec;working@antonioanzivino: not found
[ivy:resolve]       :: ${project.parent.groupId}#jboss-logging-generator;1.0.0.Beta6: not found
[ivy:resolve]       :: org.jboss.ws#jbossws-api;1.0.0-SNAPSHOT: not found
[ivy:resolve]       :: gnu-getopt#getopt;1.0.13: not found
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] 
[ivy:resolve] 
[ivy:resolve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

BUILD FAILED

Uso la siguiente configuración de resolución en miivy-settings.xml

    <resolvers>
    <filesystem name="shared" >
        <ivy pattern="${ivy.shared.default.root}/${ivy.shared.default.ivy.pattern}" />
        <artifact pattern="${ivy.shared.default.root}/${ivy.shared.default.artifact.pattern}" />
    </filesystem>
    <ibiblio name="maven2" m2compatible="true"/>
    <ibiblio name="geotools" m2compatible="true" root="http://download.osgeo.org/webdav/geotools"/>
    <ibiblio name="hibernate-spatial" m2compatible="true" root="http://www.hibernatespatial.org/repository"/>
    <ibiblio name="jboss" m2compatible="true" root="https://repository.jboss.org/nexus/content/repositories/releases/"/>
    <ibiblio name="mavenjava" m2compatible="true" root="http://download.java.net/maven/2" />
</resolvers>
<resolvers>
    <chain name="default" returnFirst="false">
        <resolver ref="local" />
        <resolver ref="maven2" />
        <resolver ref="geotools" />
        <resolver ref="hibernate-spatial" />
        <resolver ref="jboss" />
        <resolver ref="shared" />

    </chain>
</resolvers>

Lo extraño es que puedo resolver todas las dependencias cuando ejecutoivy:resolve en mi proyecto local.

Me gustaría publicar recursivamente dependencias en el repositorio local de Ivy cuando publique un nuevo artefacto. ¿Como hacer eso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta