Pregunta

Estoy utilizando la hiedra para publicar una foto de un tarro incorporado a un repositorio Nexus alojado localmente utilizando la siguiente Ant.

<target name="publish">
    <ivy:publish resolver="nexus_snapshot" pubrevision="SNAPSHOT" overwrite="true">
        <artifacts pattern="${dist.dir}/[artifact].[ext]" />
    </ivy:publish>
</target>

Esto parece bien el trabajo, lo que resulta en el frasco y su ivy.xml asociada estar presente en el repositorio (con los nombres de archivo MyModule-SNAPSHOT.jar y la hiedra-SNAPSHOT.jar).

Más tarde, en otro script de construcción, quiero recuperar el tarro y sus dependencias asociadas (es decir, tal como se especifica en su ivy.xml) en un directorio.

Este es el objetivo de la hormiga que estoy usando.

<target name="deploy">
    <delete dir="deploy" />
    <mkdir dir="deploy" />
    <ivy:settings file="${ivy.dir}/ivy_deploy_settings.xml" />
    <ivy:retrieve organisation="myorg" module="mymodule" 
       inline="true" revision="SNAPSHOT" pattern="deploy/[artifact].[ext]"/>
</target>

Esto recupera el tarro en el directorio, pero no sus dependencias. También, si añado

conf="impl"

para la recuperación, se produce un error que no se encuentra la configuración.

Por lo tanto, parece que el recuperar simplemente no hace referencia al ivy.xml y por lo tanto no resolver las dependencias.

Si esto trabajo o estoy mal entendido algo?

¿Fue útil?

Solución

Ahora he resuelto este problema. Creo que el problema es simplemente que Nexus funciona con archivos de POM en lugar de los archivos de la hiedra (por defecto al menos - no puedo ver las opciones de configuración relevantes).

La solución, por tanto, es generar un POM adecuado y publicar este junto con el tarro.

<target name="publish">
    <property name="generated.ivy.file" value="${dist.dir}/ivy.xml" /> 
    <ivy:deliver deliverpattern="${generated.ivy.file}"
        organisation="${ivy.organisation}" 
        module="${ivy.module}" status="integration"
        revision="${ivy.revision}"
        pubrevision="SNAPSHOT"
        conf="impl" />

<ivy:makepom ivyfile="${generated.ivy.file}" 
    pomfile="${dist.dir}/${ivy.module}.pom"/>

    <ivy:publish resolver="nexus_snapshot" pubrevision="SNAPSHOT" 
        publishivy="false" status="integration" overwrite="true">
        <artifacts pattern="${dist.dir}/[artifact].[ext]" /> 
        <artifact name="${ivy.module}" type="pom" ext="pom"/>
    </ivy:publish> 
</target>

Tenga en cuenta que por primera vez generar un archivo de hiedra para el módulo actual (y mi configuración deseada) para crear el POM de.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top