apie mus
1C kuriame ne tik platformą
Įrašas
„Maven“ dažniausiai naudojame kaip „Java“ programų kūrimo sistemą, todėl šiame trumpame straipsnyje norėtume pakalbėti apie vieną iš problemų, su kuriomis teko susidurti organizuojant kūrimą, ir apie požiūrį, kuris leido mums tai įveikti. problema.
Būtinos sąlygos ir darbo eiga
Dėl kūrimo specifikos mūsų maven projektuose naudojame gana daug modulių, priklausomybių ir vaikų projektų. Pom failų skaičius viename medyje gali būti dešimtys ar net šimtai.
Atrodytų: nieko baisaus, jie vieną kartą tai sukūrė ir pamiršo. Jei reikia ką nors pakeisti ar pridėti visuose failuose vienu metu, redaktoriuose ir IDE yra daug patogių įrankių. Koks yra dažniausiai įprastas pom.xml pakeitimas? Manome, kad keičiasi projekto versijos ir priklausomybės. Galbūt kas nors norės su tuo ginčytis, bet pas mus būtent tokia situacija. Priežastis slypi tame, kad kartu su branduoliu mes vienu metu kuriame daug savo bibliotekų, o norint, kad kūrimo ir testavimo rezultatai būtų nuolat atkuriami, momentinių nuotraukų naudojimas mums neatrodo patogus būdas. Dėl šios priežasties būtina padidinti versijos numerį projektuose su kiekviena versija.
Be to, kartkartėmis kūrėjas turi sukurti savo bibliotekos filialą ir patikrinti jo funkcionalumą pagal visas priklausomybes, dėl kurių jis turi rankiniu būdu pakeisti visų jų versiją.
Pradinis sprendimas
Dėl tokių dažnų ir daugybinių versijų keitimų noriu supaprastinti ir automatizuoti procesą CI. Čia į pagalbą ateina patogus, gerai žinomas įskiepis. versions-maven-plugin - prijunkite ir paleiskite
mvn -N versions:set -DnewVersion=2.0.1
o Mavenas padarys viską, kaip priklauso: eis per hierarchiją iš viršaus į apačią, pakeisdamas visas versijas – grožis! Dabar belieka iškelti ištraukimo užklausą, kolegos peržiūrės pakeitimus ir galėsite greitai prisijungti prie bagažinės. Greitai? Kad ir kaip būtų. Pora šimtų pom.xml peržiūrėti, ir tai neskaičiuojamas kodas. Be to, niekas nėra apsaugotas nuo sujungimo konfliktų esant tokiam daugybei pakeistų failų. Pažymėtina, kad CI procese versijų pakeitimai vyksta automatiškai kartu su funkcionalumo pokyčiais, o ne kažkaip atskirai.
Naujos funkcijos
Kurį laiką nusiraminome ir patys atsistatydinę taip gyvenome, kol vaikinai iš
mvn -Drevision=2.0.0 švarus paketas
Sistemos savybių reikšmės turi viršenybę prieš reikšmes, nurodytassavybės>.
Tėvas
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-tėvas
Pirmasis CI draugiškas
${revision}${sha1}${changelist}
...
1.3.1
- momentinė nuotrauka
Palikuonis
4.0.0
org.apache.maven.ci
ci-tėvas
${revision}${sha1}${changelist}
org.apache.maven.ci
ci-vaikas
...
Jei norite sukurti 2.0.0-SNAPSHOT versiją, tiesiog naudokite
mvn -Drevision=2.0.0 švarus paketas
Jei norite išleisti, tiesiog iš naujo nustatykite SNAPSHOT
mvn -Dchangelist = švarus paketas
*Aukščiau pateikti pavyzdžiai paimti iš
Griežta realybė
Viskas gerai ir sveika, laikas jausti pasitenkinimą, bet ne. Pasirodo, šis metodas neveiks diegiant ir diegiant, nes jis nebus pakeistas saugykloje paskelbtuose artefaktų aprašymuose ${revision} dėl jo reikšmės ir maven nebesupras, apie ką kalbama.
org.apache
apache
${revision}
Šviesa tunelio gale
Turime ieškoti problemos sprendimo. Galėjo išgelbėti situaciją
Papildinio pridėjimas prie projekto
org.codehaus.mojo
flatten-maven-plugin
1.1.0
tiesa
išspręstiCiFriendliesOnly
išlyginti
procesas-ištekliai
išlyginti
išlyginti.švarus
švarus
švarus
Priimta!
Laiminga pabaiga
Nuo šiol, norėdami pakeisti viso projekto versiją ir pranešti apie tai visoms priklausomybėms, tereikia redaguoti elementąperžiūrėjimas> tik šaknyje pom.xml. Į peržiūrą patenka ne šimtas ar du failai su tuo pačiu pakeitimu, o vienas. Na, nereikia naudoti versions-maven-plugin.
Šaltinis: www.habr.com