NOTA:
Questa risposta si applica solo a Maven 2! Le citate LATEST
e le RELEASE
metaversioni sono state eliminate in Maven 3 "per motivi di costruzioni riproducibili" , oltre 6 anni fa. Fare riferimento a questa soluzione conforme a Maven 3 .
Se vuoi sempre utilizzare la versione più recente, Maven ha due parole chiave che puoi utilizzare come alternativa agli intervalli di versioni. Dovresti usare queste opzioni con cura poiché non hai più il controllo dei plugin / dipendenze che stai utilizzando.
Quando si dipende da un plug-in o una dipendenza, è possibile utilizzare il valore della versione LATEST o RELEASE. ULTIMO si riferisce all'ultima versione rilasciata o istantanea di un particolare artefatto, l'ultimo manufatto distribuito in un particolare repository. RELEASE si riferisce all'ultima versione non snapshot nel repository. In generale, non è consigliabile progettare software che dipende da una versione non specifica di un artefatto. Se stai sviluppando software, potresti voler utilizzare RELEASE o LATEST per comodità, in modo da non dover aggiornare i numeri di versione quando viene rilasciata una nuova versione di una libreria di terze parti. Quando rilasci software, dovresti sempre assicurarti che il tuo progetto dipenda da versioni specifiche per ridurre le possibilità della tua build o del tuo progetto di essere influenzato da una versione del software non sotto il tuo controllo.
Vedi la sezione Sintassi POM del libro Maven per maggiori dettagli. O vedi questo documento su Range di versioni di dipendenza , dove:
- Una parentesi quadra (
[
& ]
) significa "chiuso" (incluso).
- Una parentesi (
(
& )
) significa "aperto" (esclusivo).
Ecco un esempio che illustra le varie opzioni. Nel repository Maven, com.foo:my-foo ha i seguenti metadati:
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>com.foo</groupId>
<artifactId>my-foo</artifactId>
<version>2.0.0</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.1</version>
<version>1.1.1</version>
<version>2.0.0</version>
</versions>
<lastUpdated>20090722140000</lastUpdated>
</versioning>
</metadata>
Se è richiesta una dipendenza da tale artefatto, sono disponibili le seguenti opzioni ( ovviamente è possibile specificare altri intervalli di versione , mostrando qui quelli pertinenti):
Dichiara una versione esatta (risolverà sempre alla 1.0.1):
<version>[1.0.1]</version>
Dichiara una versione esplicita (risolverà sempre alla 1.0.1 a meno che non si verifichi una collisione, quando Maven selezionerà una versione corrispondente):
<version>1.0.1</version>
Dichiarare un intervallo di versioni per tutti 1.x (attualmente risolverà a 1.1.1):
<version>[1.0.0,2.0.0)</version>
Dichiara un intervallo di versioni aperto (risolverà fino alla 2.0.0):
<version>[1.0.0,)</version>
Dichiara la versione come ULTIMA (verrà risolta in 2.0.0) (rimossa da maven 3.x)
<version>LATEST</version>
Dichiara la versione come RELEASE (risolverà alla 1.1.1) (rimossa da maven 3.x):
<version>RELEASE</version>
Si noti che per impostazione predefinita le proprie distribuzioni aggiorneranno la voce "più recente" nei metadati di Maven, ma per aggiornare la voce "rilascio", è necessario attivare il "profilo di rilascio" da Maven super POM . Puoi farlo con "-Prelease-profile" o "-DperformRelease = true"
Vale la pena sottolineare che qualsiasi approccio che consente a Maven di scegliere le versioni di dipendenza (LATEST, RELEASE e intervalli di versioni) può lasciarti aperto per creare problemi di tempo, poiché le versioni successive possono avere comportamenti diversi (ad esempio il plug-in di dipendenza ha precedentemente impostato un valore predefinito valore da vero a falso, con risultati confusi).
Pertanto è generalmente una buona idea definire versioni esatte nelle versioni. Come sottolinea la risposta di Tim , il plug-in Maven-version è uno strumento utile per l'aggiornamento delle versioni di dipendenza, in particolare le versioni: use-latest-version e version: use-latest-rilascia obiettivi.