2012-08-31 9 views
7

Ich möchte den neuesten Versionsnamen (als Text) abrufen, um die aus Nexus abgerufenen Artefakte mit Zeitstempeln umzubenennen.OSS Nexus: Wie verwende ich REST API um die letzte Version als Text zu erhalten

Was ich mache, ist ein Archiv von mehreren Archiven zu erstellen, die jar-Projekte, Abhängigkeiten, verwandte Skripte, ... enthalten. Aber wenn die gepackten Gläser Schnappschüsse sind, werden die Archive beim Herunterladen mit Zeitstempeln versehen. Diese Zeitstempel ersetzen die XXX-SNAPSHOT Erweiterung des Archivs und ich kann kein automatisiertes Skript erstellen, um einige Aufgaben wie das Extrahieren des Archivs, das Umbenennen des Verzeichnisses, das Erstellen einiger symbolischer Links, ... auszuführen Dies ist in der Rest-API Dokumentation. Gibt es einen einfachen Weg, dies mit dem Rest API oder eine Art von Skripten zu tun?

Danke.

Edit:

Von unten Antwort konnte ich die neueste Snapshot-Version mit AKTUELLE anstelle der Versionsnamen abzurufen:

Dann mit einem Skript kann ich die Basisversion abrufen.

#!/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" 

Danke!

Antwort

8

Nexus hat die folgenden REST-API für die beschreiben, wie Maven Module gelöst werden:

Beispiel

Um die Details zu folgendem Artefakt zu erhalten:

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

Verwenden Sie die folgenden REST-API:

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

Gibt den folgenden Bericht:

<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

Dies war ein eariler gelöschte Eintrag eine alternative Art und Weise der Montage Verteilungen von Maven Repository-Inhalten vorschlägt:

Ivy ist ein alternativer Abhängigkeitsmanagement-Client, der von den command-line ausgeführt werden kann wie folgt:

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

Die abrufen Option des Efeu Befehl Details, wie die heruntergeladenen Dateien lokal gespeichert werden sollten:

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

Das korrekte zeitgestempelte Artefakt wird abgerufen, aber die Revisionsnummer "SNAPSHOT" bleibt erhalten. Das ist, was ich verstehe, was Sie versuchen zu tun.

Die ivysettings Datei beschreibt detailliert die Repositorys verwendet werden, wenn Artefakte Download:

<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

Das ist, was ich tun möchte, aber wir verwenden Maven und möchten nicht zu einem anderen Dependencies Manager wechseln. – fewe

Verwandte Themen