2009-06-23 19 views
11

¿alguien sabe cómo especifico en Ivy algo como mirror/mirrorOf en Maven? Estoy trabajando con un proxy Maven local (Nexus) y necesito la herramienta para especificar a cuál de los repositorios principales debe acceder el proxy Nexus.Ivy vía proxy Nexus

En Maven hago simplemente:

<mirrors> 
    <mirror> 
    <id>central-mirror</id> 
    <mirrorOf>central</mirrorOf> 
    <url>http://localhost:8081/content/repositories/central</url> 
    </mirror> 
</mirrors> 

pero no puedo encontrar este tipo de opción en la hiedra.

Respuesta

6

No creo que tal opción exista directamente. Puedes intentar implementar un chain y colocar tu repositorio Nexus por delante de la central en esa cadena. Si entiendo cómo funcionan las cadenas correctamente (eso es un gran si), Ivy comprobará su repositorio antes de central, por lo que, siempre que su repositorio tenga los contenidos relevantes, no se necesitará la central.

Consulte el tutorial para obtener más detalles.

+1

Gracias - eso es lo que he temido. Ivy simplemente no cumple mis expectativas después de trabajar con Maven. –

+2

Ivy tiene una forma diferente de abordar la administración de dependencias. –

+6

-1 al comentario de Mark. No es una forma diferente, es una característica que falta. Como analogía: imagínese que está usando un navegador que no tiene configuraciones para 'Configuración de Proxy', no significa que aborde la navegación web de una manera diferente, significa que el software no se puede usar (sin cortes) cuando realmente necesita establecer un proxy. –

-1

He hecho lo mismo pero con Archiva, lo que es muy similar. Sólo se tiene que declarar en una nueva cadena de los siguientes:

<chain name="private"> 
<url name="archiva" m2compatible="true"> 
    <ivy pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/ivy.xml" /> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact].[ext]" /> 
    </url> 
</chain> 
+1

El uso de Archiva para lograr el proxy no está dentro del alcance de la pregunta. Puedes hacerlo de varias formas diferentes. El problema es usar eso de la hiedra de una manera similar a la que se usa en maven. –

+0

No creo que exista tal opción en Ivy. –

-1

Archiva gestiona Maven 2 repositorios (artefactos con Maven metadatos) no suele existir datos Ivy meta (ivy.xml). Y el diseño de Maven 2 es [organización]/[módulo]/[revisión]/[artefacto] - [revisión]. [Ext].

sólo tenemos que proporcionar la siguiente información

<url name="archiva" m2compatible="true"> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    </url> 
</chain> 

o

<settings defaultResolver="archiva"/> 
    <resolvers> 
<ibiblio name="archiva" m2compatible="true" root="http://.../archiva/repository/internal/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/> 
    </resolvers> 
+0

El uso de Archiva para lograr un proxy no está dentro del alcance de la pregunta. Puedes hacerlo de varias formas diferentes. El problema es usar eso de la hiedra de una manera similar a la que se usa en maven. –

8

Es necesario crear un dispositivo de resolución pública que hace lo que quiere (más detalles @Ivy docs)

Básicamente guarde el siguiente fragmento en $ USERHOME/.ivy2/ivysettings-public.xml. Esto debería funcionar.

<ivysettings> 
    <resolvers> 
    <ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/> 
    </resolvers> 
</ivysettings> 
  • La instalación estándar no modificada tiene 'nexo' de la URL!
  • Si necesita desplegar artefactos, creo que la solución es hacer algo similar a la resolución compartida (vea el enlace a documentos más arriba), pero no lo he intentado.
  • He cambiado tu URL local para que se resuelva en el 'contenido/grupos/público' estándar, lo cual es mejor ya que en el fragmento de configuración de maven anterior estás pasando todas las llamadas a través del espejo, no solo a las centrales. Solo agregue repositorios adicionales a ese grupo en la interfaz de usuario de Nexus a medida que vayan apareciendo y debería estar bien.
  • Si sus cargas de proyectos que la propia ivysettings que no hacen honor a los valores predeterminados, a continuación, estos ajustes no se cargan y ya está otra vez de vuelta en cero :(
+1

Lo intentaré, pero parece que el hecho de que ivysettings.xml del proyecto anule completamente la configuración del usuario, no me será útil. ¡Pero gracias de cualquier manera! –

+0

El problema es que uno debe poder obtener el proyecto del repositorio y simplemente construirlo. Con cualquier modificación en el entorno local, todo está en la ventana ... ¡Pero gracias de todos modos por su respuesta! –

+0

Probé esta técnica con https://svn.apache.org/repos/asf/ant/core/trunk/[email protected]#checkstyle y no pareció tener ningún efecto; mensajes referidos a "descargar http: //repo1.maven.org/maven2/..." como antes. –

2

Así es como lo hice el trabajo (El respuesta de @Heron no funcionó para mí):

crear un archivo con este contenido:

<ivysettings> 
    <settings defaultResolver="default"/> 
    <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" /> 
    <resolvers> 
    <chain name="default"> 
     <ibiblio name="public" m2compatible="true" root="http://nexus-server:8081/nexus/content/groups/public"/> 
    </chain> 
    </resolvers> 
</ivysettings> 

Refere a la misma desde la acumulación de hormigas:

<ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" /> 

Ivy ahora puede resolver las dependencias de mi repositorio de nexus.