2012-11-22 9 views
8

Sto usando il plugin rilascio M2 dall'interno Jenkins che chiama la Maven-release-plugin 2.3.2 internamente, mentre la costruzione getta questo errore: You don't have a SNAPSHOT project in the reactor projects list. Il problema è che i miei progetti poms do hanno la loro versione 1.0.0-SNAPSHOT. Cosa mi manca?Maven plug stampa - progetto SNAPSHOT necessaria

com.abc.def è il company parent POM, e sto solo facendo per mvn release per utils

<modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>com.abc</groupId> 
     <artifactId>def</artifactId> 
     <version>1.0.0</version> 
    </parent> 

    <groupId>com.abc.def</groupId> 
    <artifactId>utils</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>utils</name> 

E sì, ho fatto la mia base di Google + SO strascico e ovunque i punti che i miei POMs dovrebbero essere avere SNAPSHOT come versione, che è già lì. Tranne che il mio padre POM della società non è un'istantanea. Potrebbe essere questa la ragione?

+0

si può mostrare il pom? – khmarbaise

+0

@khmarbaise ha aggiunto il POM –

+0

Si tratta di un singolo modulo o è il genitore di una build multi-modulo, perché la sua confezione è pom? – khmarbaise

risposta

12

Ho avuto lo stesso problema ma queste soluzioni non hanno funzionato. This blog post by Tomek Kaczanowski colpisci l'unghia sulla testa.

La causa spesso è che la strategia SVN di Jenkins è impostata su "usa svn update il più possibile" che non ripulisce lo spazio di lavoro di generazione tra le build.

Quando si tenta di tagliare un rilascio, Jenkins aggiornerà il tuo pom e creerà alcuni file temporanei. Se la versione non riesce, questi aggiornamenti pom e i file temporanei non vengono ripuliti. Quindi, quando si aggiusta il pom e si prova a ricostruire, si ottiene l'errore You don't have a SNAPSHOT project in the reactor projects list a causa di questi artefatti di workspace funky che confondono Jenkins.

La soluzione è cambiare la strategia di Jenkins SVN. Una delle caratteristiche seguenti dovrebbe funzionare:

  • Controllare sempre una nuova copia
  • emulare cassa pulita prima eliminando i file privi di versione/ignorati, poi 'svn update'
  • uso svn update, per quanto possibile, con 'svn revert' prima dell'aggiornamento

Ti consiglio anche di svuotare lo spazio di lavoro di Jenkins solo per assicurarti di ricominciare da capo.

+2

hai ragione. All'epoca in cui ho postato la domanda, stavo ancora imparando le corde Maven-Jenkins, ma ho trovato lo stesso me stesso pochi giorni dopo. Avrei dovuto correggere la mia risposta, ma visto che hai postato per primo, devo dartelo. Grazie per aver risolto questo. –

5

Il master pom non deve necessariamente essere SNAPSHOT (nella mia azienda abbiamo la stessa configurazione e funziona correttamente). Questa parte della utils pom è OK per quanto posso dire, quindi forse vi state perdendo qualcosa di diverso, come

<scm> 
    <developerConnection>scm:${release-scm}</developerConnection> 
</scm> 

e, naturalmente, la sezione maven release plugin in definizione di compilazione nella tua POM? (un colpo lungo lo so)

+0

Il fatto che sono in grado di raggiungere lo stadio in cui si genera l'errore 'Non hai un progetto SNAPSHOT nell'elenco dei progetti del reattore', questo significa che ho configurato correttamente il tag' 'leggendo questo http://maven.apache.org/scm/plugins/usage.html, quindi non è questo il problema. E se non avessi dichiarato il plugin di rilascio di Maven nel POM padre, avrei ricevuto un errore che diceva "Fase del ciclo di vita sconosciuto in mvn release" o qualcosa del genere e non ho raggiunto questo stadio –

+0

Ho creato un progetto di prova simile a quello che Ho (master senza snapshot, packaging pom) e l'ho passato attraverso Jenkins v1.488 e m2 release plugin v0.9.1. Il master utilizza il plugin di rilascio v2.2.1 e il plugin scm v1.5. Non sono stato in grado di ricreare il problema, a parte uno scenario molto discutibile. Vale a dire, l'unica volta che ottengo lo stesso errore è quando pom sta avendo una versione che non termina con SNAPSHOT, ad es. 1.0.0-SNAPSHOT-suffisso. Qui potrebbe succedere perché gli sviluppatori si ramificano per ogni problema (errore umano nella versione). Potresti avere moduli figli in questa versione? – tohokami

+0

Inoltre, se non ti dispiace inviare una versione ripulita dei tuoi pom, sarei lieto di condurli attraverso Jenkins per vedere cosa succede. Oppure posso pulire il nostro e inviarti se vuoi. – tohokami

2

ho trovato il motivo: L'ultima Capogruppo POM non veniva raccolto

  1. avevo clean e -U sia nella lista mvn argomenti. Non ha funzionato
  2. Quindi ho pulito il repository ~/.m2. Non ha funzionato

Quello che ha funzionato è, a Jenkins

  1. Vai alla pagina Job config
  2. Vai a Build, fare clic su Advanced
  3. Selezionare la casella Use private Maven repository
  4. Select Local to the workspace. Save

So che questa è una di quelle cose strane che Maven ha l'abitudine di fare per qualche motivo. E come al solito gli errori non sono abbastanza informativi/intuitivi.

3

In realtà lo spazio di lavoro di Jenkis contiene vecchie versioni non SNAPSHOT di alcuni moduli. Provare a cancellare lo spazio di lavoro (= per pulirlo e cancellarlo), quindi eseguire nuovamente il rilascio, otterrà le versioni di correzione con il suffisso -SNAPSHOT

4

a volte ho riscontrato problemi di ortografia con il termine: "SNAPSHOT", che in pratica porterà anche allo stesso errore. come:

1. SNAPSOT 
2. SNASHOT 
3. SHNAPSOT 

;-) quindi vale la pena di verificarlo anticipatamente.

fresco per il fissaggio è quello di utilizzare il pom genitore:

versions:set 
+2

+1 Non riesco a digitare SNAPSHOT tutto il giorno. Oh, lì, l'ho fatto. – Josh

+0

versione: set è spiegato qui: http://mojo.codehaus.org/versions-maven-plugin/examples/set.html – koppor

Problemi correlati