Reyndu að nota flatten-maven-plugin til að einfalda útgáfu í maven-verkefnum

um okkur

Hjá 1C þróum við ekki aðeins vettvang 1C: Fyrirtæki á C ++ и JavaScript, en einnig Java forrit - einkum nýja þróunarumhverfið Þróunartæki fyrir fyrirtæki byggt á Eclipse og boðberaþjóni sem er djúpt samþættur pallinum - Samskiptakerfi.

Færslu

Við notum Maven oftast sem smíðakerfi fyrir Java forrit og í þessari stuttu grein viljum við tala um eitt af vandamálunum sem við þurftum að takast á við í skipulagsþróunarferlinu og um nálgunina sem gerði okkur kleift að sigrast á þessu. vandamál.

Forsendur og vinnuflæði

Vegna sérstakra þróunar í maven verkefnum okkar notum við töluvert mikið af einingum, ósjálfstæði og barnaverkefnum. Fjöldi pom-skráa í einu tré getur verið í tugum eða jafnvel hundruðum.

Reyndu að nota flatten-maven-plugin til að einfalda útgáfu í maven-verkefnum

Það virðist: ekkert mál, þeir bjuggu það til einu sinni og gleymdu því. Ef þú þarft að breyta eða bæta við einhverju í öllum skrám í einu, þá eru fullt af þægilegum verkfærum í ritstjórum og IDE. Hver er algengasta reglulega breytingin á pom.xml? Við teljum að breytingar á útgáfum verkefnisins og ósjálfstæði. Kannski vill einhver rífast um þetta, en þetta er einmitt staðan hjá okkur. Ástæðan liggur í þeirri staðreynd að ásamt kjarnanum erum við samtímis að þróa mörg af okkar eigin bókasöfnum og fyrir stöðugan endurgerðanleika smíða- og prófunarniðurstaðna virðist notkun skyndimynda okkur ekki hentug nálgun. Af þessum sökum er nauðsynlegt að hækka útgáfunúmerið í verkefnum með hverri byggingu.

Einnig þarf verktaki af og til að byggja upp sína eigin útibú af bókasafni og athuga virkni þess gegn öllum ósjálfstæðum, sem hann þarf að breyta handvirkt um útgáfu þeirra allra.

Frumlausn

Með svona tíðum og mörgum útgáfubreytingum vil ég einfalda og gera ferlið sjálfvirkt innan CI. Þetta er þar sem þægilegt, vel þekkt viðbót kemur til bjargar. útgáfur-maven-viðbót - tengdu það og ræstu það

mvn -N útgáfur:set -DnewVersion=2.0.1

og Maven mun gera allt eins og það ætti: það mun keyra í gegnum stigveldið frá toppi til botns og kemur í stað allra útgáfur - fegurð! Nú er allt sem er eftir að leggja fram beiðni um drátt, samstarfsmenn munu fara yfir breytingarnar og þú getur fljótt tekið þátt í skottinu. Fljótt? Sama hvernig það er. Nokkur hundruð pom.xml til skoðunar og þetta er ekki talið með kóðann. Að auki er enginn óhultur fyrir því að sameina árekstra við svo mikinn fjölda breyttra skráa. Það skal tekið fram hér að í CI ferlinu verða útgáfubreytingar sjálfkrafa ásamt breytingum á virkni, en ekki einhvern veginn sérstaklega.

Nýir eiginleikar

Um tíma róuðumst við og sögðum upp, lifðum við svona þangað til strákarnir frá Maven Apache verkefnið Frá og með útgáfu 3.5.0-beta-1, var Maven ekki með stuðning fyrir svokallaða „staðsetningar“. Kjarninn í þessum staðgöngum er sá pom.xml í stað tiltekinnar vísbendingar um verkefnisútgáfu eru notaðar breytur ${revision}, ${sha1} и ${changelist}. Gildi þessara eiginleika sjálfra eru stillt annað hvort í frumefninueignir>, eða þeir geta verið skilgreindir í gegnum kerfiseiginleika

mvn -Drevision=2.0.0 hreinn pakki

Gildi kerfiseigna ganga framar gildum sem skilgreind eru íeignir>.

Foreldrið

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-foreldri
  Fyrsta CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -SYNDAMYND
    
  


Afkomandi

  4.0.0
  
    org.apache.maven.ci
    ci-foreldri
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-barn
   ...

Ef þú vilt byggja útgáfu 2.0.0-SNAPSHOT, notaðu þá bara

    mvn -Drevision=2.0.0 hreinn pakki

Ef þú vilt gefa út, endurstilltu þá bara SNAPSHOT

    mvn -Dchangelist= hreinn pakki

*Dæmin hér að ofan eru tekin úr Grein á vefsíðu Maven Apache Project

Harður veruleiki

Allt er gott og heilbrigt, það er kominn tími til að finna fyrir ánægju, en nei. Það kemur í ljós að þessi aðferð mun ekki virka fyrir uppsetningu og dreifingu, þar sem henni verður ekki skipt út í lýsingum á gripum sem birtar eru í geymslunni ${revision} á merkingu þess og maven mun ekki lengur skilja hvað það snýst um.


    org.apache
    apache
    ${revision}

Ljós í enda ganganna

Við þurfum að leita lausna á vandanum. Hefði getað bjargað ástandinu flatten-maven-plugin. Þessi viðbót leysir allar breytur í pom, en klippir á sama tíma út fullt af öðrum upplýsingum sem aðeins er þörf á meðan á samsetningu stendur og er ekki þörf þegar þú flytur inn birta gripi í önnur verkefni. Viðbótin „réttir líka út“ alla ósjálfstæði foreldra og barna og fyrir vikið færðu flatan pom sem inniheldur allt sem þú þarft. Óþægindin voru þau að það sleppir of miklu „auka“ sem hentaði okkur alls ekki. Eftir að hafa rannsakað upplýsingarnar um þróun þessa viðbótar kom í ljós að við erum ekki þau einu í alheiminum og aftur í ágúst 2018 var búið til pull-beiðni á Github í viðbótageymslunni með löngun til að gera það mögulegt til að ákvarða á eigin spýtur hvernig eigi að „spilla“ pom.xml. Hönnuðir hlustuðu á raddir þeirra sem þjáðust og þegar í desember, með útgáfu nýju útgáfunnar 1.1.0, birtist nýr hamur, resolveCiFriendliesOnly, í flatten-maven-plugin, sem hentaði betur en nokkru sinni fyrr - hann fer pom.xml eins og það er, nema frumefnið og leyfir ${revision}, ${sha1} и ${changelist}.

Bæti viðbót við verkefnið


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      satt
      leysaCiFriendliesOnly
    
    
      
        fletja út
        ferli-auðlindir
        
          fletja út
        
      
      
        fletja.hreinsa
        hreint
        
          hreint
        
      
    
  

Gert!

Hamingjusamlegur endir

Héðan í frá, til að breyta útgáfunni af öllu verkefninu og láta alla ósjálfstæði vita af því, þurfum við bara að breyta þættinumendurskoðun> bara í rótinni pom.xml. Ekki hundrað eða tvær af þessum skrám með sömu breytingu koma í endurskoðunina, heldur ein. Jæja, það er engin þörf á að nota útgáfur-maven-viðbót.

Heimild: www.habr.com

Bæta við athugasemd