2012-02-14 7 views
36

Me gustaría proporcionar una URL simple que siempre devuelva la versión más reciente de una versión instantánea de un artefacto. Por simple quiero decir que la URL no cambia, o requiere que el usuario explore el directorio y examine las marcas de tiempo.¿Cómo proporciono acceso URL a la última instantánea de un artefacto en Nexus?

+0

que tenía exactamente la misma pregunta. Estoy escribiendo guiones que descargan artefactos de Nexus y las URLs dinámicas para instantáneas donde molesto. –

Respuesta

54

Tenga en cuenta que esta respuesta se relaciona con 2.X Nexus

El Nexus núcleo "redirección" REST API se puede utilizar para recuperar cualquier versión de un artefacto de un repositorio nominado:

Por ejemplo:

https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST

El parámetro v puede tener un valor como 1.0-SNAPSHOT, en cuyo caso Maven devolverá la última instantánea con sello de tiempo retenida en el repositorio. De manera similar, el valor especial "ÚLTIMO" debería hacer lo mismo, siempre que una versión lanzada más reciente no esté presente.

+1

Asegúrese de usar la ID del repositorio y no el nombre del repositorio para el parámetro "r" – evandor

+0

¡Ojalá pudiera darle dos votos favorables! Lo único que omitió es un enlace (¿funciona?) A los documentos de la API REST, que debería ser algo así como /nexus-core-documentation-plugin/core/docs/index.html. –

+0

@ TomislavNakic-Alfirevic Sí, el enlace en mi respuesta ya no funciona ... Sonatype cambia bastante su sitio y la configuración del servidor ... Es una pena terrible que no haya un sitio de referencia maestro para los documentos de la API REST. Como ya dijiste, el resto de doco está disponible desde la instancia local. –

0

Cada repositorio tiene su propia url (se puede ver en el navegador del repositorio). Si lo abre, puede navegar a través del grupo y los identificadores de artefactos a su artefacto. Esa es su url, por ejemplo como este: http://nexushost.domain/content/repositories/snapshots/com/example/group/artifact/1.2.3-SNAPSHOT/1.2.3-SNAPSHOT.jar

+0

Utilizamos versiones de instantáneas con marcas de tiempo, así que no es tan simple. – chad

+0

@chad. Eso es lo que -SNAPSHOT hace. Piénselo como un enlace simbólico a la última versión con marca de tiempo. –

+1

Definitivamente eso no funciona para mí. he esperado que la búsqueda directa de http del repositorio me proporcione esa capa de inspección de metadatos de resolución. ¿Es posible que necesite configurar el repositorio de alguna forma para esto ... – chad

2

en mi máquina nexo entre todos los resultados para:

http://nexushost.domain/nexus/content/repositories/snapshots/com/company/elasticsearch-river-mongodb/1.2.3-SNAPSHOT/

son así: * -1.2.3-20131204.143026-1.zip

por lo que no puede acceder a él directamente porque Necesito proporcionar más detalles que sean dinámicos.

El ejemplo con "... redirigir? R = centro-proxy & g = log4j & a = log4j & v = ÚLTIMO" está trabajando si abro en el navegador, pero no cuando lo que instalarlo desde una máquina Linux usando:

/usr/share/elasticsearch/bin/plugin --url "http://localhost:8081/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.comapny.application&a=elasticsearch-river-mongodb&v=1.2.3-SNAPSHOT&p=zip" --install river-mongodb

Así que mi solución temporal está utilizando wget:

wget -O /tmp/elasticsearch-river-mongodb.zip "http://nexushost.domain/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.comapny.application&a=elasticsearch-river-mongodb&v=1.2.3-SNAPSHOT&p=zip"

luego instalar ÚLTIMO cinco rsion del archivo local.

3

Si está buscando la última versión de una instantánea, simplemente pida por ejemplo, "1.0-SNAPSHOT" devolverá la última versión de la instantánea de ese artefacto.

Sin embargo, si está buscando la "última versión", la sintaxis "v = LATEST" funcionará, pero tenga en cuenta que esta palabra clave puede devolver la última versión de esa instantánea que está buscando, o el lanzamiento que acaba de completarse, o esa OTRA rama de ese mismo artefacto que es una versión por delante y aún en "-SNAPSHOT".

Si está buscando lo último absoluto, sí, use la "v = ÚLTIMA VEZ". Si está buscando la última versión, también puede solicitar "v = LIBERACIÓN". Si tiene una agrupación de repositorios, puede hacer referencia a ambos repositorios instantáneos y liberar repositorios agregando a la url algo así como:

"...v = r = LIBERACIÓN & pública"

Eso debe buscar a través de todos sus 'repos' agrupados.

Cuestiones relacionadas