О нас
U 1C razvijamo ne samo platformu
ulazak
Maven najčešće koristimo kao build sistem za Java aplikacije, a u ovom kratkom članku želimo govoriti o jednom od problema sa kojima smo se morali suočiti u procesu organizacije razvoja, te o pristupu koji nam je omogućio da to prevaziđemo. problem.
Preduslovi i tok rada
Zbog specifičnosti razvoja u našim maven projektima, koristimo dosta modula, zavisnosti i podređenih projekata. Broj pom fajlova u jednom stablu može biti u desetinama ili čak stotinama.
Činilo bi se: ništa strašno, jednom su ga stvorili i zaboravili. Ako trebate promijeniti ili dodati nešto u svim datotekama odjednom, postoji mnogo zgodnih alata u uređivačima i IDE-ovima. Koja je najčešća redovna promjena pom.xml? Vjerujemo da su promjene u verzijama projekta i ovisnostima. Možda će neko hteti da se s tim i polemiše, ali kod nas je upravo takva situacija. Razlog leži u činjenici da, zajedno sa kernelom, istovremeno razvijamo mnoge sopstvene biblioteke, a za stalnu ponovljivost rezultata izgradnje i testiranja, upotreba snimaka nam se ne čini prikladnim pristupom. Iz tog razloga, potrebno je povećati broj verzije u projektima sa svakom izgradnjom.
Također, s vremena na vrijeme, programer treba da napravi sopstvenu granu biblioteke i proveri njenu funkcionalnost u odnosu na sve zavisnosti, za šta mora ručno da promeni verziju svih njih.
Početno rješenje
Sa tako čestim i višestrukim promjenama verzija, želim pojednostaviti i automatizirati proces unutar CI. Ovdje u pomoć dolazi zgodan, dobro poznati dodatak. versions-maven-plugin - povežite ga i pokrenite
mvn -N verzije: set -DnewVersion=2.0.1
a Maven će učiniti sve kako treba: proći će kroz hijerarhiju od vrha do dna, zamjenjujući sve verzije - ljepota! Sada ostaje samo da podnesete zahtjev za povlačenjem, kolege će pregledati promjene i možete se brzo pridružiti prtljažniku. Brzo? Bez obzira kako je. Par stotina pom.xml na pregled, a to se ne računa kod. Osim toga, niko nije siguran od sukoba spajanja s tako velikim brojem promijenjenih datoteka. Ovdje treba napomenuti da se u CI procesu promjene verzije dešavaju automatski zajedno sa promjenama u funkcionalnosti, a ne nekako odvojeno.
Nove karakteristike
Neko vrijeme smo se smirili i rezignirani živjeli smo tako do momaka iz
mvn -Drevision=2.0.0 čisti paket
Vrijednosti sistemskih svojstava imaju prednost nad vrijednostima definiranim usvojstva>.
Roditelj
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-parent
First CI Friendly
${revision}${sha1}${changelist}
...
1.3.1
-SNAPSHOT
Potomak
4.0.0
org.apache.maven.ci
ci-parent
${revision}${sha1}${changelist}
org.apache.maven.ci
ci-dijete
...
Ako želite da napravite verziju 2.0.0-SNAPSHOT, samo koristite
mvn -Drevision=2.0.0 čisti paket
Ako želite da objavite, samo resetujte SNAPSHOT
mvn -Dchangelist= čisti paket
*Gore navedeni primjeri su preuzeti iz
Oštra realnost
Sve je dobro i zdravo, vreme je da osetite zadovoljstvo, ali ne. Ispostavilo se da ova metoda neće raditi za instalaciju i implementaciju, jer neće biti zamijenjena u opisima artefakata objavljenih u spremištu ${revision} na njegovo značenje i maven više neće razumjeti o čemu se radi.
org.apache
apache
${revision}
Svetlo na kraju tunela
Moramo tražiti rješenje problema. Mogao je spasiti situaciju
Dodavanje dodatka u projekat
org.codehaus.mojo
flatten-maven-plugin
1.1.0
istinito
resolveCiFriendliesOnly
izravnati
proces-resursi
izravnati
flatten.clean
cisto
cisto
Gotovo!
Sretan kraj
Od sada, da bismo promijenili verziju cijelog projekta i obavijestili sve ovisnosti o tome, samo trebamo urediti elementrevizija> samo u korijenu pom.xml. Na recenziju ne stiže sto ili dve ovih fajlova sa istom izmjenom, već jedan. Pa, nema potrebe za korištenjem versions-maven-plugin.
izvor: www.habr.com