rest build repository nexus sonatype

Sonatype Nexus REST Api busca la última versión de compilación



nexus 3 api (5)

Después de probar el servicio REST con la LATEST versión (y descubrir que no siempre funciona ), terminé creando este comando de Linux de una sola línea para analizar el archivo metadata.xml :

wget -O - -o /dev/null https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po ''(?<=<version>)([0-9/.]+(-SNAPSHOT)?)'' | sort --version-sort -r| head -n 1

¿Cómo puedo usar la API REST de Sonatype para obtener la compilación con la versión más alta (la compilación temporal más reciente)?

http://MY_REPOSITORY/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=ARTIFACT_VERSION

Pasar una versión de compilación como ARTIFACT_VERSION funciona. Pasar v=LATEST o v=latest NO devuelve la última compilación.


La API de búsqueda de Lucene también permite la búsqueda de palabras clave para la versión:

http://<nexus_repository>/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=1.0.*


No está documentado que / service / local / lucene / search sea compatible con "LATEST" como parámetro de versión [ link ] La documentación de la API OSIS Rest indica que /service/local/artifact/maven [ link ] (para obtener el archivo pom del artefacto) y /service/local/artifact/maven/content [ link ] (para obtener el contenido del archivo real) lo admite:

Versión del artefacto (Requerido) Admite la resolución de "ÚLTIMO", "LIBERAR" y versiones de instantáneas ("1.0-SNAPSHOT") también.

Así que creo que deberías usar uno de ellos (tendrás que proporcionarlos también con repositoryId y groupId) por ejemplo:

http://MY_REPOSITORY/nexus/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&v=LATEST


Tengo el sistema operativo Linux y no tengo acceso a la API REST, por lo que utilicé los siguientes comandos para obtener la última versión de las instantáneas de Nexus:

Un ejemplo de instantáneas maven-metadata.xml del repositorio de WSO2:

$ curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" <?xml version="1.0" encoding="UTF-8"?> <metadata> <groupId>org.wso2.is</groupId> <artifactId>wso2is</artifactId> <versioning> <latest>5.3.0-SNAPSHOT</latest> <release></release> <versions> <version>5.1.0-SNAPSHOT</version> <version>5.2.0-SNAPSHOT</version> <version>5.3.0-SNAPSHOT</version> </versions> <lastUpdated>20160914062755</lastUpdated> </versioning> </metadata>

Extraer de la etiqueta XML más reciente dentro de maven-metadata.xml:

curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" | / grep "<latest>.*</latest>" | / sed -e "s#/(.*/)/(<latest>/)/(.*/)/(</latest>/)/(.*/)#/3#g"

Extraer de la etiqueta de la versión XML dentro de maven-metadata.xml:

curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" | / grep "<version>.*</version>" | / sort | uniq | tail -n1 | / sed -e "s#/(.*/)/(<version>/)/(.*/)/(</version>/)/(.*/)#/3#g"

El resultado de ambos comandos hasta hoy 14 de septiembre de 2016 es:

5.3.0-SNAPSHOT


Tuve el mismo problema y lo resolví así usando la API de búsqueda de Lucene:

if [[ "${REPO}" == "snapshots" ]]; then version=$( curl --silent "http://${HOST}/nexus/service/local/lucene/search?g=${GROUP_ID}&a=${ARTIFACT}" | sed -n ''s|<latestSnapshot>/(.*/)</latestSnapshot>|/1|p'' | sed -e ''s/^[ /t]*//'' | tail -1 ) else version=$( curl --silent "http://${HOST}/nexus/service/local/lucene/search?g=${GROUP_ID}&a=${ARTIFACT}" | sed -n ''s|<latestRelease>/(.*/)</latestRelease>|/1|p'' | sed -e ''s/^[ /t]*//'' | tail -1 ) fi curl -o ~/${ARTIFACT}-${VERSION}.zip -L -# "http://${HOST}/nexus/service/local/artifact/maven/redirect?r=${REPO}&g=${GROUP_ID}&a=${ARTIFACT}&e=zip&v=${VERSION}"