2012-08-31 14 views
7

Me gustaría recuperar el último nombre de la versión (como texto) para poder cambiar el nombre de los elementos recuperados de Nexus que tienen marcas de tiempo.OSS Nexus: cómo usar la API REST para recuperar la última versión como texto

Lo que hago es crear un archivo de varios archivos que contienen proyectos jar internos, dependencias, scripts relacionados, ... Pero si los archivos empaquetados son instantáneas, los archivos terminan con marcas de tiempo cuando se descargan. Esas marcas de tiempo reemplazan la extensión XXX-SNAPSHOT del archivo y no puedo hacer ningún script automatizado para realizar algunas tareas como extraer el archivo, cambiar el nombre del directorio, hacer algunos enlaces simbólicos, ...

No encontré nada relacionado con esto en el resto api documentación. ¿Hay una manera simple de hacer esto con la API de reposo o algún tipo de scripting?

Gracias.

Editar:

A partir de la respuesta a continuación me las arreglé para recuperar la versión más reciente instantánea con lo último en lugar del nombre de la versión:

Luego, utilizando un script que puedo recuperar la versión base.

#!/bin/bash 
VERSION=`curl --silent "http://redmine.saic.int:8081/nexus/service/local/artifact/maven/resolve?r=snapshots&g=com.g2mobility&a=G2-Modem-Mgr&v=LATEST&c=executable&e=tar.gz" | sed -n 's|<baseVersion>\(.*\)</baseVersion>|\1|p'` 

VERSION=`echo "$VERSION" | tr -d ' '` 

echo "Version is $VERSION" 

¡Gracias!

Respuesta

8

Nexus tiene la siguiente API REST para la descripción de los módulos de cómo Maven se resuelven:

Ejemplo

para obtener los detalles acerca de los siguientes artefactos:

<groupId>org.cometd.jetty</groupId> 
<artifactId>cometd-jetty-client</artifactId> 
<version>1.0-SNAPSHOT</version> 

Usar la siguiente API REST:

https://oss.sonatype.org/service/local/artifact/maven/resolve?r=cometd-snapshots&g=org.cometd.jetty&a=cometd-jetty-client&v=1.0-SNAPSHOT&e=jar

Devuelve el siguiente informe:

<artifact-resolution> 
    <data> 
    <presentLocally>true</presentLocally> 
    <groupId>org.cometd.jetty</groupId> 
    <artifactId>cometd-jetty-client</artifactId> 
    <version>1.0-20090313.100344-2</version> 
    <baseVersion>1.0-SNAPSHOT</baseVersion> 
    <extension>jar</extension> 
    <snapshot>true</snapshot> 
    <snapshotBuildNumber>2</snapshotBuildNumber> 
    <snapshotTimeStamp>1236938624000</snapshotTimeStamp> 
    <sha1>0cbf7163f19bf4586e27632a1f742dd0c0e0036d</sha1> 
    <repositoryPath>/org/cometd/jetty/cometd-jetty-client/1.0-SNAPSHOT/cometd-jetty-client-1.0-20090313.100344-2.jar</repositoryPath> 
    </data> 
</artifact-resolution> 
0

Este fue un anuncio suprimido eariler proponer una forma alternativa de montaje de las distribuciones de Maven contenido del repositorio:

Ivy es un cliente de gestión de la dependencia alternativa, que se puede ejecutar desde el command-line de la siguiente manera:

java -jar ivy.jar -settings ivysettings.xml -dependency org.cometd.jetty cometd-jetty-client 1.0-SNAPSHOT -retrieve "distrib/[artifact]-[revision](-[classifier]).[ext]" 

La opción recuperar del comando ivy detalla cómo los archivos descargados deben almacenarse localmente:

-- distrib 
    |-- cometd-api-1.0-SNAPSHOT.jar 
    |-- cometd-jetty-client-1.0-SNAPSHOT.jar 
    |-- cometd-jetty-client-1.0-SNAPSHOT-javadoc.jar 
    |-- cometd-jetty-client-1.0-SNAPSHOT-sources.jar 
    |-- cometd-jetty-server-1.0-SNAPSHOT.jar 
    |-- jetty-6.1.15.jar 
    |-- jetty-client-6.1.15.jar 
    |-- jetty-sslengine-6.1.15.jar 
    |-- jetty-util5-6.1.15.jar 
    |-- jetty-util-6.1.15.jar 
    `-- servlet-api-2.5-20081211.jar 

Se recupera el artefacto de marca de tiempo correcto, pero se conserva el número de revisión "SNAPSHOT", que es lo que entiendo que está intentando hacer.Detalles

El archivo ivysettings los repositorios que se utilizarán durante la descarga de los artefactos:

<ivysettings> 
    <settings defaultResolver="repos"/> 
    <resolvers> 
     <chain name="repos"> 
      <ibiblio name="central" m2compatible="true"/> 
      <ibiblio name="cometd-snapshot" root="https://oss.sonatype.org/content/repositories/cometd-snapshots/" m2compatible="true"/> 
     </chain> 
    </resolvers> 
</ivysettings> 
+0

Eso es lo que quiero hacer, pero estamos usando maven y no queremos movernos a otro administrador de dependencias. – fewe

Cuestiones relacionadas