Ho cercato per un po 'di tempo e non sono riuscito a trovare alcuna soluzione di lavoro o guida/tutorial per rilasciare i moduli Maven quando si utilizzano sottomoduli Git nidificati.Rilascio di più artefatti Maven quando si utilizzano sottomoduli Git nidificati
Abbiamo una struttura complessa di progetti pubblici e privati che richiedono un ordine specifico per la compilazione. Il nostro obiettivo è eseguire una versione di Maven per taggare e distribuire più artefatti Maven in un unico passaggio.
Ecco il progetto/moduli semplificati Maven e Git struttura repository:
parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository)
| |
| |- public-module:1.0.0-SNAPSHOT:jar
| (Maven module, child of parent-public, Git submodule, public repository)
|
|- parent-private:1.0.0-SNAPSHOT:pom
(Maven modules, Git submodule, private repository)
|
|- public-module:1.0.0-SNAPSHOT:jar
| (Maven module only, child of parent-public, Git submodule, public repository, released)
|
|- private-module:1.0.0-SNAPSHOT:war
(Maven module, child of parent-private, released)
L'attuale struttura consente Maven per creare e distribuire progetti/moduli in modo indipendente.
Al rilascio public-module
(dal genitore-pubblico/genitore-privato/pubblico-modulo directory), i maven-release-plugin
comporta bene (repository Git è stato taggato e rilasciare manufatto è stato distribuito).
Al rilascio parent-private
, il maven-release-plugin
prepara e avvia l'esecuzione il rilascio prima di fallire durante la bersaglio cassa (questo problema è discusso here, ma la soluzione non funziona nel mio contesto e non abbastanza la reputazione di commentare). ci
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagNameFormat>[email protected]{project.version}</tagNameFormat>
<commitByProject>true</commitByProject>
<pushChanges>true</pushChanges>
</configuration>
</plugin>
è un modo più elegante per organizzare moduli Maven e repository Git al fine di rilasciare più artefatti Maven:
Ecco la configurazione corrente maven-release-plugin
? In alternativa, qualcuno ha trovato una soluzione per clonare in modo ricorsivo i sottomoduli Git durante il checkout poco prima della distribuzione degli artefatti?
Che suona come un multi-Maven modulo build che di conseguenza deve essere in un singolo repository Git invece che sotto forma di sottomoduli.Inoltre usando una build multi-modulo puoi semplicemente distribuire/rilasciare l'intero modulo in un unico passaggio, quindi la domanda è perché ti piace rendere le cose più complicate ? – khmarbaise
@khmarbaise: grazie per il tuo commento Abbiamo deciso di acquistare un singolo repository Git con più moduli Maven in quanto non siamo riusciti a trovare una soluzione _simple_ per la nostra struttura di progetto – almeidap
IMHO non c'è davvero una buona opzione. i passaggi durante il rilascio stanno creando un _tag_, con th E semantico che il ripristino del codice da questo tag mi fornirà tutto il codice per questa versione. Ma con i sottomoduli GIT, non c'è modo di garantire che l'utente riceva tutto da quel tag, perché può facilmente vedere il sottomodulo come il primo. –