Domanda

Quali sono le migliori pratiche per il software delle versioni e progetti MultiModules con Maven?

Voglio dire, quando creo un MultiModules progetto con Maven, qual è l'approccio migliore per il controllo delle versioni? Per utilizzare una singola versione per tutti i moduli (definito nel progetto in alto)? Per utilizzare una versione per ogni modulo (definito nel POM di ogni modulo)? C'è un altro approccio che mi manca? Quali sono i pro ei contro di ogni approccio?

In generale, sono i diversi moduli rilasciato insieme (possibilmente condividendo lo stesso numero di versione)?

Grazie

È stato utile?

Soluzione

Onestamente dipende da ciò che si vorrebbe fare. progetti multimodulo vengono creati per molteplici motivi, uno dei quali è solamente necessario distribuire ciò che è cambiato, invece di tutti i moduli.

Pensare in questo modo: se si ha un progetto non-multi-modulo e si aveva solo cambiare una riga nello strato di servizi, è necessario ricostruire l'intero progetto e distribuire tutto il codice di nuovo ... anche anche se solo il vostro livello di servizi cambierà.

Con i progetti multi-modulo, si può rigenerare il progetto e distribuire solo ciò che è cambiato ... i vostri servizi. Questo riduce il rischio e siete sicuri che solo i tuoi Services Module cambiati.

È anche avere un gran numero di vantaggi di utilizzare i progetti multi-modulo che non sto sfogliare qui, ma c'è sicuramente un enorme vantaggio per non mantenere i numeri di versione dei moduli in sincronia.

Quando si genera il progetto, considerare la distribuzione è a un repository che conterrà tutti i vasetti compatibili insieme per costruisce (ogni generazione crea una nuova cartella con il genitore-pom più numero di versione). In questo modo, non è necessario conservare la documentazione di cui vasi sono compatibili ... sono tutti appena distribuiti insieme con un numero di build.

Altri suggerimenti

Ero alla ricerca di una soluzione per questo problema esatto me stesso e versioni-Maven-plugin era esattamente quello che mi serviva. Non mi piace il rilascio plugin di comunicare con il sistema SCM. Le versioni del plugin fa proprio quello che ci serve: si stabilisce un nuovo numero di versione in tutti i pon del progetto:

mvn versions:set -DnewVersion=2.0.0

Poi posso procedere con commit, tag e una build ufficiale build server ...

Modifica :

Le versioni plugin dipende da come è stato organizzato un progetto multi-modulo Maven: di conseguenza, spesso non aggiornare tutti i file POM in un complesso progetto di multi-modulo. Ho scoperto che sed e trovare il lavoro molto più affidabile:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`

In genere si crea un progetto multi-modulo perché avete ritenuto che i vari moduli sono parti di un tutto unico. Forse il cliente-pezzo, il sistema di controllo pezzo e dei servizi pezzi. O forse l'interfaccia utente con i servizi.

In ogni caso, ha senso avere i numeri di versione per i vari moduli di muoversi in lock-step. Tuttavia Maven non rispettare che come una regola.

Per quanto riguarda la tua domanda

sono i diversi moduli rilasciato insieme (possibilmente condividono la stessa numero di versione)

I penserebbe così. Questo è uno dei motivi per avere un progetto multi-modulo. In caso contrario, si potrebbe avere i moduli come progetti indipendenti.

Naturalmente questo è il genere di cose che è piena di casi limite ed eccezioni; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top