Chi siamo
In 1C sviluppiamo non solo una piattaforma
Iscrizione
Utilizziamo molto spesso Maven come sistema di compilazione per applicazioni Java e in questo breve articolo vorremmo parlare di uno dei problemi che abbiamo dovuto affrontare nel processo di organizzazione dello sviluppo e dell'approccio che ci ha permesso di superare questo problema.
Prerequisiti e flusso di lavoro
A causa delle specificità dello sviluppo nei nostri progetti Maven, utilizziamo molti moduli, dipendenze e progetti figli. Il numero di file pom in un albero può essere dell'ordine delle decine o addirittura delle centinaia.
Sembrerebbe: niente di grave, l'hanno creato una volta e se ne sono dimenticati. Se hai bisogno di modificare o aggiungere qualcosa in tutti i file contemporaneamente, ci sono molti strumenti utili negli editor e negli IDE. Qual è la modifica regolare più comune a pom.xml? Riteniamo che i cambiamenti nelle versioni e nelle dipendenze del progetto. Forse qualcuno vorrà discuterne, ma questa è esattamente la nostra situazione. Il motivo sta nel fatto che, insieme al kernel, stiamo sviluppando contemporaneamente molte delle nostre librerie e, data la costante riproducibilità dei risultati di compilazione e test, l'uso di snapshot non ci sembra un approccio conveniente. Per questo motivo è necessario aumentare il numero di versione nei progetti ad ogni build.
Inoltre, di tanto in tanto, uno sviluppatore deve creare il proprio ramo di una libreria e verificarne la funzionalità rispetto a tutte le dipendenze, per cui deve modificare manualmente la versione di tutte.
Soluzione iniziale
Con modifiche di versione così frequenti e multiple, voglio semplificare e automatizzare il processo all'interno di CI. È qui che viene in soccorso un plugin comodo e noto. plugin-versioni-maven - collegalo e avvialo
mvn -N versioni:set -DnewVersion=2.0.1
e Maven farà tutto come dovrebbe: percorrerà la gerarchia dall'alto verso il basso, sostituendo tutte le versioni: bellezza! Ora non resta che sollevare una richiesta pull, i colleghi esamineranno le modifiche e potrai unirti rapidamente al trunk. Velocemente? Non importa come sia. Un paio di centinaia pom.xml per la revisione, e questo non conta il codice. Inoltre, nessuno è al sicuro dai conflitti di unione con un numero così elevato di file modificati. Va notato qui che nel processo CI, le modifiche alla versione avvengono automaticamente insieme alle modifiche alla funzionalità e non in qualche modo separatamente.
Nuove funzionalità
Per un po 'ci siamo calmati e, rassegnati, abbiamo vissuto così fino all'uscita dei ragazzi
mvn -Drevision=2.0.0 pacchetto pulito
I valori delle proprietà di sistema hanno la precedenza sui valori definiti inproprietà>.
Il genitore
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-genitore
Primo CI amichevole
${revisione}${sha1}${lista modifiche}
...
1.3.1
-ISTANTANEA
Discendente
4.0.0
org.apache.maven.ci
ci-genitore
${revisione}${sha1}${lista modifiche}
org.apache.maven.ci
ci-bambino
...
Se vuoi creare la versione 2.0.0-SNAPSHOT, usa semplicemente
mvn -Drevision=2.0.0 pacchetto pulito
Se vuoi fare un rilascio, resetta semplicemente SNAPSHOT
mvn -Dchangelist= pacchetto pulito
*Gli esempi sopra riportati sono tratti da
Realtà dura
Tutto è buono e sano, è il momento di provare un senso di soddisfazione, ma no. Risulta che questo metodo non funzionerà per l'installazione e la distribuzione, poiché non verrà sostituito nelle descrizioni degli artefatti pubblicati nel repository ${revisione} sul suo significato e gli esperti non capiranno più di cosa si tratta.
org.apache
apache
${revisione}
Una luce in fondo a un tunnel
Dobbiamo cercare una soluzione al problema. Avrei potuto salvare la situazione
Aggiunta di un plugin al progetto
org.codehaus.mojo
flatten-maven-plugin
1.1.0
VERO
risolvereCiFriendliesOnly
appiattire
risorse-processo
appiattire
appiattire.pulire
pulito
pulito
Fatto!
Lieto fine
D'ora in poi, per cambiare la versione dell'intero progetto e farlo sapere a tutte le dipendenze, basterà modificare l'elementorevisione> solo nella radice pom.xml. Alla revisione non arrivano cento o due di questi file con la stessa modifica, ma uno. Bene, non è necessario utilizzarlo plugin-versioni-maven.
Fonte: habr.com