2013-07-04 12 views
5

Bene, il problema è che voglio che Maven controlli la versione di dipendenza durante la compilazione e mi avvisa se ci sono versioni di dipendenze più recenti (di fatto - notificami se uso una versione obsoleta di qualche modulo). Il mio modulo esperto di A ha le seguenti dipendenze:Come fallire la generazione di maven se esiste una nuova versione della dipendenza nel repository?

<dependency> 
    <groupId>com.example.mycompany</groupId> 
    <artifactId>commons</artifactId> 
    <version>1.0.3</version> 
</dependency> 

E com.example.mycompany:commons modulo, infatti, può già avere 1.0.4 versione. C'è un modo per verificare la versione della dipendenza in repo e fallire la compilazione se la versione più recente è già disponibile.

Spero che versions-maven-plugin possa farlo. Ma non riesco a trovare la configurazione appropriata.

+0

Avete controllato [versioni-maven-plugin: Display-dipendenza-aggiornamenti] (http://mojo.codehaus.org/ versioni-maven-plugin/examples/display-dependency-updates.html) obiettivo? Questo può essere usato per creare un report e potrebbe essere analizzato per ottenere ciò che ti piace? – khmarbaise

+0

In effetti, io uso quello con regola di enforcer personalizzata come @spacetrucker menzionato di seguito. – revenforv

risposta

3

Questo problema può essere risolto con maven-enforcer-plugin. Devi creare il tuo custom rule, perché non del standard rules sembra corrispondere alle tue esigenze.

La nozione della regola che si intende implementare deve essere le dipendenze di applicazione sono aggiornate. Per implementare il controllo, potresti trarre ispirazione dalle versioni-plugin di Maven che menzioni.

+0

Questa sembra la soluzione giusta. Grazie! – revenforv

+1

@revenforv Qualche possibilità che desideri pubblicare questa regola personalizzata? Mi piacerebbe usarlo da solo. – xnickmx

+0

@xnickmx Sfortunatamente, no. Non avevamo tempo per quella regola personalizzata e quindi abbiamo deciso di utilizzare l'approccio "controllo manuale e modifica versione". – revenforv

0

Se si utilizza il controllo di origine e un server di integrazione continua (che è un presupposto sicuro) è possibile:

  1. utilizzare il versions plugin e lasciare che modifica il pom
  2. quindi utilizzare il scm:check-local-modification o il rilascio plugin come plugin di rilascio IIRC verifica le modifiche locali.

Ecco un esempio controllo per l'ultima pom genitore:

mvn versions:update-parent scm:check-local-modification -DallowSnapshots=false -DgenerateBackupPoms=false