2012-07-13 21 views
8

mvn rilascio: prepararePuò Maven rilascio: preparare la versione aggiornamento snapshot per la versione in modalità batch

mi chiede continuamente per risolvere le dipendenze istantanee. C'è un modo per farlo in modalità batch in modo che Maven utilizzi automaticamente la versione associata. Ad esempio, se una dipendenza è 1.0.0-SNAPSHOT aggiornerà automaticamente questa dipendenza alla versione 1.0.0?

[INFO] Checking dependencies and plugins for snapshots ... 
There are still some remaining snapshot dependencies.: Do you want to resolve them now?  (yes/no) no: : yes 
Dependency type to resolve,: specify the selection number (0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions): (0/1/2/3) 1: : 1 
Resolve Project Dependency Snapshots.: 'com.my.project' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 0.0.2-SNAPSHOT 
+0

Hai provato a usare --batch-mode di mvn? – khmarbaise

+0

Non aiuterà neanche. – khmarbaise

risposta

5

È possibile effettuare l'aggiornamento dello snapshot di via versions-maven-plugin prima del rilascio.

+0

Sto affrontando lo stesso plugin (versioni-maven-plugin 2.2) per questo scopo. Ma, per qualche ragione, non funziona. Sto semplicemente usando - versioni: use-releases e la versione iniziale del mio progetto è 1.0.0-SNAPSHOT. Qualche soluzione per quello? Grazie!! –

3

Se la dipendenza è un programma di voi proprietario e il suo ciclo di vita è strettamente legata a quella che si tenta di rilasciare, si potrebbe pensare di utilizzare un progetto multimodulo: http://maven.apache.org/guides/mini/guide-multiple-modules.html. Il plugin di rilascio Maven aggiornerebbe la versione per tutti i moduli delle dipendenze.

In caso contrario, probabilmente si sta facendo qualcosa che non dovrebbe. Cambiare semplicemente 1.0.0-SNAPSHOT a 1.0.0 non garantisce che l'app continui a funzionare. Quindi non considera che Maven dovrebbe!

Ulteriori considerazioni

Maven assegni plugin di stampa se si utilizza una dipendenza un'istantanea, perché Snapshot, per definizione, sono vesions instabili. Potrebbe cambiare nel tempo. Ciò significa che quello che funzionava oggi potrebbe non funzionare domani.

significa che la versione è stabile Rilasciare, e l'accumulo può essere di riprodurre in qualsiasi momento senza alcuna variazione. Usando la versione Snapshot, questa asserzione diventa falsa.

Quindi,

8

Si noti che è possibile configurare Maven ignorare le dipendenze SNAPSHOT controllo utilizzando allowTimestampedSnapshots, secondo la documentazione Maven-release-plugin:

allowTimestampedSnapshots:

se consentire dipendenze timestamped SNAPSHOT. L'impostazione predefinita è fallire quando si trova uno SNAPSHOT.

  • Tipo: booleano
  • dal: 2,0-beta-7
  • richiesto: No
  • Espressione: $ {ignoreSnapshots}
  • predefinito: false

O semplicemente eseguire il comando qui sotto:

rilascio mvn: preparare -DignoreSnapshots = true

Tuttavia, è comunque raccomandato di risolvere tutte le dipendenze snapshot prima di fare la versione finale, in quanto è la convenzione usata da più persone.Dovresti sempre considerare di farlo manualmente in fase di sviluppo piuttosto che in batch automatico in fase di rilascio, dato che le dipendenze del progetto di modifica/aggiornamento (vaso tuo o di terze parti) possono a volte introdurre bug o incompatibilità e interrompere il tuo progetto, che di solito richiede l'attenzione dello sviluppatore e correggili prima di fare il rilascio finale.

In un'altra parola, la risoluzione delle dipendenze non è un'attività che dovrebbe essere eseguita in fase di rilascio, inoltre, non è un compito che dovrebbe essere eseguito automaticamente senza l'attenzione dello sviluppatore.

+0

Totalmente d'accordo con te –

Problemi correlati