2012-02-14 7 views
36

Vorrei fornire un semplice URL che restituirà sempre l'ultima versione di una versione di istantanea di un artefatto. Per semplice intendo che l'URL non cambia, o richiede all'utente di sfogliare la directory ed esaminare i timestamp.Come posso fornire accesso URL all'ultima istantanea di un artefatto in Nexus?

+0

Ho avuto esattamente la stessa domanda. Sto scrivendo script che scaricano manufatti Nexus e gli URL dinamici per le istantanee dove –

risposta

54

Si prega di notare questa risposta si riferisce a Nexus 2.X

Nexus core "redirect" REST API può essere utilizzato per recuperare qualsiasi versione di un artefatto da un repository nominato:

Ad esempio:

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

Il parametro v può essere un valore come 1.0-SNAPSHOT, nel qual caso Maven restituirà l'ultimo snapshot con timestamp contenuto nel repository. Similmente il valore speciale "LATEST" dovrebbe fare lo stesso a condizione che non sia presente una versione più recente rilasciata.

+1

Assicurati di utilizzare l'ID del repository e non il nome del repository per il parametro "r" – evandor

+0

Vorrei poterti dare due upvotes! L'unica cosa che hai omesso è un collegamento (funzionante?) Ai documenti dell'API REST, che dovrebbe essere qualcosa come /nexus-core-documentation-plugin/core/docs/index.html. –

+0

@ TomislavNakic-Alfirevic Sì, il collegamento nella mia risposta non funziona più .... Sonatype cambia il proprio sito e la configurazione del server un po '... È un peccato che non ci sia un sito di riferimento principale per i documenti dell'API REST. Come hai detto il resto doco è disponibile dall'istanza locale. –

0

Ogni repository ha il proprio URL (lo si può vedere nel browser del repository). Se lo apri, puoi sfogliare gli id ​​di gruppo e artefatto sul tuo artefatto. Questo è il tuo URL, ad esempio come questo: http://nexushost.domain/content/repositories/snapshots/com/example/group/artifact/1.2.3-SNAPSHOT/1.2.3-SNAPSHOT.jar

+0

Utilizziamo le versioni di snapshot con data e ora, quindi non è così semplice – chad

+0

@chad. Ecco cosa fa -SNAPSHOT. Pensa a un link simbolico a una versione aggiornata con data e ora –

+1

Che sicuramente non funziona per me. mi aspettavo che la navigazione http diretta del repository mi desse quel livello di controllo dei metadati della risoluzione, è possibile che io abbia bisogno di configurare il repository in qualche modo per questo ... – chad

2

sulla mia macchina nexus tutti i risultati per:

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

sono come questo: * -1.2.3-20131204.143026-1.zip

quindi non posso accedervi direttamente a causa Devo fornire maggiori dettagli dinamici.

L'esempio con "... redirect? R = centro-proxy & g = log4j & a = log4j & v = ULTIMA" sta lavorando se apro nel browser ma non quando ho quello di installarlo da qualche macchina Linux utilizzando:

/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

quindi la mia soluzione temporanea sta usando 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"

quindi installare l'ultima ve rsion dal file locale.

3

Se si sta cercando l'ultima versione di un'istantanea, basta chiedere, "1.0-SNAPSHOT" restituirà l'ultima versione dello snapshot di tale artefatto.

Se stai cercando "ultima versione", tuttavia, la sintassi "v = LATEST" funzionerà, ma tieni presente che questa parola chiave può restituire l'ultima versione di quella istantanea che stai cercando o la versione appena completato, o quel ramo ALTRO dello stesso artefatto che è una versione successiva e ancora a "-SNAPSHOT".

Se stai cercando l'ultimo assoluto allora si, usa "v = LATEST". Se stai cercando l'ultima versione, puoi anche chiedere "v = RELEASE". Se si dispone di un raggruppamento di repository, è possibile fare riferimento a entrambi i repository e rilasciare repository aggiungendo all'URL qualcosa come:

"...v = STAMPA & r = pubblico"

Questo dovrebbe cercare in tutti i vostri 'pronti contro termine' raggruppati.

Problemi correlati