Par mums
1C mēs izstrādājam ne tikai platformu
Ieraksts
Mēs visbiežāk izmantojam maven kā Java lietojumprogrammu veidošanas sistēmu, un šajā īsajā rakstā mēs vēlamies runāt par vienu no problēmām, ar kurām mums bija jāsaskaras izstrādes organizēšanas procesā, un par pieeju, kas ļāva mums to pārvarēt. problēma.
Priekšnoteikumi un darbplūsma
Pateicoties attīstības specifikai mūsu maven projektos, mēs izmantojam diezgan daudz moduļu, atkarību un bērnu projektu. Pom failu skaits vienā kokā var būt desmitos vai pat simtos.
Šķiet: nekas, viņi to vienreiz izveidoja un aizmirsa. Ja jums ir jāmaina vai jāpievieno kaut kas visos failos vienlaikus, redaktoros un IDE ir daudz ērtu rīku. Kādas ir visizplatītākās regulārās izmaiņas vietnē pom.xml? Mēs uzskatām, ka izmaiņas projekta versijās un atkarībās. Varbūt kāds vēlēsies ar to strīdēties, bet pie mums situācija ir tieši tāda. Iemesls ir fakts, ka kopā ar kodolu mēs vienlaikus izstrādājam daudzas savas bibliotēkas, un, lai nodrošinātu nepārtrauktu izveides un testēšanas rezultātu reproducēšanu, momentuzņēmumu izmantošana mums nešķiet ērta pieeja. Šī iemesla dēļ ir nepieciešams palielināt versijas numuru projektos ar katru būvējumu.
Arī izstrādātājam laiku pa laikam ir jāizveido sava bibliotēkas filiāle un jāpārbauda tās funkcionalitāte pret visām atkarībām, tādēļ viņam ir manuāli jāmaina visu to versija.
Sākotnējais risinājums
Ar tik biežām un vairākām versiju izmaiņām es vēlos vienkāršot un automatizēt procesu CI. Šeit palīgā nāk ērts, labi zināms spraudnis. versions-maven-plugin - pievienojiet to un palaidiet to
mvn -N versions:set -DnewVersion=2.0.1
un Maven darīs visu kā nākas: brauks cauri hierarhijai no augšas uz leju, nomainot visas versijas - skaistums! Tagad atliek tikai izvirzīt pull pieprasījumu, kolēģi pārskatīs izmaiņas, un jūs varat ātri pievienoties stumbram. Ātri? Vienalga kā ir. Pāris simti pom.xml pārskatīšanai, un tas netiek skaitīts kods. Turklāt neviens nav pasargāts no sapludināšanas konfliktiem ar tik lielu mainīto failu skaitu. Šeit jāatzīmē, ka CI procesā versiju izmaiņas notiek automātiski kopā ar izmaiņām funkcionalitātē, nevis kaut kā atsevišķi.
Jaunas iespējas
Kādu laiku nomierinājāmies un, paši atkāpušies, tā dzīvojām līdz puiši no
mvn -Drevision=2.0.0 tīra pakotne
Sistēmas rekvizītu vērtībām ir prioritāte pār vērtībām, kas definētasīpašības>.
Vecāks
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-vecāks
Pirmais CI draudzīgs
${revision}${sha1}${changelist}
...
1.3.1
- MOMENTA SHOT
Pēcnācējs
4.0.0
org.apache.maven.ci
ci-vecāks
${revision}${sha1}${changelist}
org.apache.maven.ci
ci-bērns
...
Ja vēlaties izveidot versiju 2.0.0-SNAPSHOT, vienkārši izmantojiet
mvn -Drevision=2.0.0 tīra pakotne
Ja vēlaties izdot laidienu, vienkārši atiestatiet SNAPSHOT
mvn -Dchangelist= tīra pakotne
*Iepriekš minētie piemēri ir ņemti no
Skarba realitāte
Viss ir labi un veselīgi, laiks sajust gandarījumu, bet nē. Izrādās, ka šī metode nedarbosies instalēšanai un izvietošanai, jo tā netiks aizstāta repozitorijā publicētajos artefaktu aprakstos ${revision} par tā nozīmi, un maven vairs nesapratīs, par ko ir runa.
org.apache
apache
${revision}
Gaisma tuneļa galā
Mums jāmeklē problēmas risinājums. Varēja situāciju glābt
Spraudņa pievienošana projektam
org.codehaus.mojo
flatten-maven-plugin
1.1.0
taisnība
atrisinātCiFriendliesOnly
saplacināt
process-resursi
saplacināt
saplacināt.tīrs
tīrs
tīrs
Gatavs!
Laimīgas beigas
No šī brīža, lai mainītu visa projekta versiju un informētu par to visas atkarības, mums vienkārši jārediģē elementsrevīzija> tikai saknē pom.xml. Pārskatā nonāk nevis simts vai divi no šiem failiem ar vienādām izmaiņām, bet gan viens. Nu nevajag izmantot versions-maven-plugin.
Avots: www.habr.com