Izkušnje z uporabo vtičnika flatten-maven za poenostavitev različic v projektih maven

O nas

Pri 1C ne razvijamo samo platforme 1C: Podjetje o C ++ и JavaScript, temveč tudi aplikacije Java - zlasti novo razvojno okolje Orodja za razvoj podjetij temelji na Eclipse in messenger strežniku, ki je globoko integriran s platformo - Interakcijski sistemi.

Začetek

Maven najpogosteje uporabljamo kot gradbeni sistem za aplikacije Java in v tem kratkem članku bi radi govorili o eni od težav, s katerimi smo se morali soočiti v procesu organizacije razvoja, in o pristopu, ki nam je omogočil, da smo to premagali. problem.

Predpogoji in potek dela

Zaradi specifike razvoja v naših maven projektih uporabljamo precej modulov, odvisnosti in podrejenih projektov. Število pom datotek v enem drevesu je lahko v desetinah ali celo stotinah.

Izkušnje z uporabo vtičnika flatten-maven za poenostavitev različic v projektih maven

Zdi se: nič hudega, ustvarili so ga enkrat in pozabili na to. Če morate nekaj spremeniti ali dodati v vse datoteke hkrati, je v urejevalnikih in IDE veliko priročnih orodij. Katera je najpogostejša redna sprememba pom.xml? Verjamemo, da spremembe v različicah projekta in odvisnosti. Morda bo kdo želel s tem polemizirati, a pri nas je točno tako. Razlog je v tem, da skupaj z jedrom hkrati razvijamo številne lastne knjižnice in za stalno ponovljivost rezultatov gradnje in testiranja se nam uporaba posnetkov ne zdi primeren pristop. Zaradi tega je treba z vsako gradnjo povečati številko različice v projektih.

Poleg tega mora razvijalec od časa do časa zgraditi lastno vejo knjižnice in preveriti njeno funkcionalnost glede na vse odvisnosti, za kar mora ročno spremeniti različico vseh.

Začetna rešitev

S tako pogostimi in večkratnimi spremembami različice želim poenostaviti in avtomatizirati proces znotraj CI. Tu na pomoč priskoči priročen, dobro poznan vtičnik. različice-maven-plugin - povežite ga in zaženite

mvn -N različice:set -DnewVersion=2.0.1

in Maven bo naredil vse, kot je treba: tekel bo po hierarhiji od vrha do dna in zamenjal vse različice - lepota! Zdaj ostane le še dvig zahteve za vlečenje, sodelavci bodo pregledali spremembe in hitro se lahko pridružite deblu. Hitro? Ne glede na to, kako je. Nekaj ​​sto pom.xml za pregled in to ne šteje kode. Poleg tega nihče ni varen pred spori spajanja s tako velikim številom spremenjenih datotek. Tu je treba opozoriti, da se v procesu CI spremembe različice zgodijo samodejno skupaj s spremembami v funkcionalnosti in ne nekako ločeno.

Nove funkcije

Za nekaj časa smo se umirili in, ko smo se sprijaznili, tako živeli, dokler fantje iz Projekt Maven Apache Od različice 3.5.0-beta-1 naprej Maven ni vključeval podpore za tako imenovane »placeholders«. Bistvo teh nadomestkov je v tem pom.xml namesto specifične navedbe različice projekta se uporabljajo spremenljivke ${revizija}, ${sha1} и ${changelist}. Vrednosti teh lastnosti so same nastavljene v elementuLastnosti> ali pa jih je mogoče definirati prek sistemske lastnosti

mvn -Drevision=2.0.0 čisti paket

Vrednosti sistemskih lastnosti imajo prednost pred vrednostmi, definiranimi vLastnosti>.

Starš

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-starš
  Prvi CI prijazen
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    - POSNETEK
    
  


Potomec

  4.0.0
  
    org.apache.maven.ci
    ci-starš
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-otrok
   ...

Če želite zgraditi različico 2.0.0-SNAPSHOT, uporabite samo

    mvn -Drevision=2.0.0 čisti paket

Če želite objaviti, potem preprosto ponastavite SNAPSHOT

    mvn -Dchangelist= čisti paket

*Zgornji primeri so vzeti iz Člen na spletni strani projekta Maven Apache

Huda realnost

Vse je dobro in zdravo, čas je za občutek zadovoljstva, a ne. Izkazalo se je, da ta metoda ne bo delovala pri namestitvi in ​​uvajanju, ker ne bo nadomeščena v opisih artefaktov, objavljenih v repozitoriju ${revizija} na njegov pomen in maven ne bo več razumel, za kaj gre.


    org.apache
    apache
    ${revizija}

Luč na koncu tunela

Moramo poiskati rešitev problema. Lahko bi rešil situacijo vtičnik flatten-maven. Ta vtičnik razreši vse spremenljivke v pomu, vendar hkrati izreže veliko drugih informacij, ki so potrebne samo med sestavljanjem in niso potrebne pri uvažanju objavljenih artefaktov v druge projekte. Vtičnik prav tako "poravna" vse odvisnosti med staršem in otrokom in kot rezultat dobite ravno pom, ki vključuje vse, kar potrebujete. Nevšečnost je bila v tem, da izreže preveč “ekstra”, kar nam nikakor ni ustrezalo. Po preučevanju informacij o razvoju tega vtičnika se je izkazalo, da nismo edini v vesolju, in že avgusta 2018 je bila na Githubu v repozitoriju vtičnikov ustvarjena zahteva za vlečenje z željo, da se to omogoči da sami določimo, kako »pokvariti« pom.xml. Razvijalci so prisluhnili glasovom trpečih in že decembra, z izidom nove različice 1.1.0, se je v vtičniku flatten-maven pojavil nov način resolveCiFriendliesOnly, ki je bil bolj primeren kot kdaj koli prej - pusti pom.xml, kot je, razen elementa in dovoljuje ${revizija}, ${sha1} и ${changelist}.

Dodajanje vtičnika v projekt


  
    org.codehaus.mojo
    vtičnik flatten-maven
    1.1.0
    
      prav
      resolveCiFriendliesOnly
    
    
      
        sploščiti
        procesni viri
        
          sploščiti
        
      
      
        sploščiti.očistiti
        čisto
        
          čisto
        
      
    
  

Končano!

Srečen konec

Od zdaj naprej, če želimo spremeniti različico celotnega projekta in o tem obvestiti vse odvisnosti, moramo samo urediti elementRevizija> samo v korenu pom.xml. Na pregled ne pride sto ali dve teh datotek z isto spremembo, ampak ena. No, ni potrebe po uporabi različice-maven-plugin.

Vir: www.habr.com

Dodaj komentar