mercoledì 5 ottobre 2011

Come distribuire facilmente pre-confezionati Artefatti Maven


Il Maven implementazione: installazione dei file obiettivo è molto utile per la distribuzione JAR (e altri artefatti) che non sono statimavenized , al repository. Esso consente di passare coordinate Maven e altri metadati relativi Maven sulla riga di comando in modo che l'artefatto finisce nel posto giusto nel repository ed ha almeno il minimo indispensabile di Maven metadati ad esso associati per renderlo utile. Sfortunatamente, uno scenario meno comuni che attualmente non è di gestire la distribuzione di un già mavenized artefatto in un repository. Recentemente ho incontrato questo problema esatto, mentre facendo un lavoro per un cliente, così ho messo insieme uno script per colmare il divario.

Cosa manca nella implementazione: installazione dei file di Maven target

Lo scenario comune che il deploy: implementare file di destinazione si intende affrontare è dove si hanno un manufatto (di solito un file JAR) che si desidera utilizzare come parte del progetto Maven costruire, ma il manufatto non è disponibile in qualsiasi repository si ha accesso anche. I due motivi più comuni per questo sono:
  • il manufatto non è stato sviluppato con Maven al primo posto
  • il manufatto è stato sviluppato con Maven, ma non è stato pubblicato in un repository si ha accesso anche
Con l'implementazione: implementare file di destinazione è possibile distribuire l'artefatto in un repository che si ha accesso anche caricare i necessari metadati Maven allo stesso tempo, e ora l'artefatto è disponibile per essere dichiarata come una dipendenza Maven nel pom del progetto. xml.
Purtroppo con il modo in cui l'obiettivo opere e gli argomenti che accetta, secondo lo scenario di cui sopra è inutilmente complesso. Anche se tutti i dati critici meta Maven è disponibile all'interno del manufatto, ancora dovete specificare il tutto correttamente sulla linea di comando.

Soluzione per automatizzare la distribuzione del 3 Partito Artefatti Maven

Per la particolare situazione con il mio cliente che non solo ha avuto quasi 160 JAR che erano nello scenario 2 sopra, abbiamo bisogno di una soluzione automatizzata ripetibile come abbiamo bisogno di essere in grado di distribuire i manufatti di molti repository (uno per ogni nuovo gruppo / progetto ambientale abbiamo dovuto creare). Così ho finito per creare uno script per estrarre il file pom.xml incorporato dalla JAR e quindi utilizzare tale pom.xml sulla implementare Maven: deploy-file riga di comando.
01.#! / bin / sh
02. 
03.#
04.distribuisce # un manufatto già confezionati Maven per un repository remoto utilizzando il file pom.xml incorporato
05.#
06. 
07.HELP_MSG = "Utilizzo: mvn-implementare artefatto <artifact file> <id <repository <URL <repository base"
08. 
09.se [$ #-ne 3], poi
10.echo $ HELP_MSG
11.exit -1
12.fi
13. 
14.ARTIFACT = $ 1
15.REPOSITORY_ID = $ 2
16.REPOSITORY_BASE_URL = $ 3
17. 
18.POM = $ (jar tf $ ARTIFACT | grep META-INF/maven / .* / pom.xml)
19. 
20.se [-n "$ POM" ]; poi
21.jar xf ARTIFACT $ $ POM
22.se [$? ne 0]; poi
. 23echo "ERRORE: non zero uscita quando si tenta di estrarre da $ $ POM artefatto"
24.exit -1
25.fi
26.mvn implementare: implementare di file -Dfile = $ ARTIFACT-DpomFile = $ POM-DrepositoryId = $ REPOSITORY_ID-Durl = $ REPOSITORY_BASE_URL
27.se [$? ne 0]; poi
. 28echo "ERRORE: non zero uscita quando si cerca di implementare ARTIFACT $ a $ REPOSITORY_BASE_URL"
29.exit -1
30.fi
31.rm $ POM
32.else
33.eco "non può trovare il file pom, provare a distribuire $ ARTIFACT manualmente"
34.exit -1
35.fi
Spero che questo script consente di risparmiare tempo a qualcuno. Fatemi sapere se avete delle proposte di miglioramento.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.