Utilisation de L'API REST de Nexus pour obtenir la dernière version d'artefact pour groupid/artifactId donné

j'essaie d'utiliser l'api nexus REST pour obtenir la dernière version d'un artefact maven. Je suis en mesure de naviguer à la version spécifique je suis à la recherche de l'aide http://repo.local/service/local/data_index?a=local-turbogears-server&from=0&g=com.turbo&c=bin&v=1.1.9 et si je supprime le paramètre version, je peux voir toutes les versions. Cependant, lorsque J'essaie D'utiliser RELEASE ou la version la plus récente, elle renvoie zéro résultat. J'ai vérifié les métadonnées maven.xml sur disque dans nexus et il y a des entrées pour la dernière version et la version. Y at-il une autre étape que je dois prendre pour retourner le dernier la version?

j'utilise actuellement:

Nexus v. 1.9.2

36
demandé sur rpax 2011-10-27 08:08:42

4 réponses

L'URL suivante va récupérer la dernière version de log4j 1.2.x:

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

Documentée ici

mise à Jour

exemple utilisant curl:

curl -L "http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST" -o log4j.jar

mise à jour pour Log4j2

Log4j 1.2 est en fin de vie depuis l'été 2015 et est connu pour être cassé en Java 9.

Voici la lien pour les artefacts de Log4j:

59
répondu Mark O'Connor 2017-12-01 07:39:06

Dans Nexus dernier est conçu pour fonctionner avec plugins maven plutôt qu'avec des artefacts réguliers. Nexus ne garantit tout simplement pas la dernière à travailler dans d'autres cas. Si maintenant il vous renvoie la version correcte de L'artefact, demain cela peut cesser de fonctionner, par exemple si vous exécutez la reconstruction des métadonnées pour le dépôt Nexus. Voulez-vous compter sur le mécanisme qui peut se rompre à tout moment (par exemple pendant le processus de libération?). J'en doute. Lire cet article pour en savoir plus perspicacité.

pour trouver la dernière version d'artefact, vous devez soit écrire votre propre script pour invoquer L'API de recherche et trier les versions d'artefact comme vous voulez. Ou vous pouvez écrire votre propre plugin pour Nexus.

alternativement, si votre workflow le permet, vous pouvez utiliser des SNAPSHOTs au lieu des versions de publication. Si vous n'incrémentez pas la partie numérique, alors x.y.z-SNAPSHOT retournera toujours le dernier binaire.

dernier point: ne pas utiliser les dernières versions d'artéfacts, dans le grande majorité des cas, si vous avez un tel cas, alors quelque chose est incorrect avec votre déploiements (ou ce que vous faites). En général, vous devez connaître la version exacte que vous allez utiliser.

23
répondu Stanislav Bashkyrtsev 2016-06-06 12:46:38

Cette réponse a été copié à partir de: https://stackoverflow.com/a/39485361/1450799

J'ai Linux OS et je n'ai pas accès à L'API REST, donc j'ai utilisé les commandes suivantes pour obtenir la dernière version de snapshots de Nexus:

un exemple de snapshots maven-metadata.xml à partir de WSO2 référentiel:

$ 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>

extraction à partir de la dernière balise XML dans 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>\)\(.*\)##g"

extraction de la balise XML de la version à l'intérieur maven-métadonnées.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>\)\(.*\)##g"

le résultat à La fois des commandes jusqu'à aujourd'hui 14 septembre 2016 est:

5.3.0-SNAPSHOT
13
répondu Reza Rahimi 2017-05-23 12:32:24

après avoir essayé le service de repos avec le LATEST la version, et découvrir qu'elle ne fonctionne pas toujours (voir @Stanislav réponse) j'ai fini par créer cette commande Linux pour analyser les métadonnées.fichier 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

il suffit de changer l'url à l'url appropriée, et cela devrait fonctionner pour vous.

Cheers

1
répondu idelvall 2017-05-23 11:46:47