Esperjenza bl-użu flatten-maven-plugin biex tissimplifika l-verżjoni fil-proġetti maven

dwarna

F'1C aħna niżviluppaw mhux biss pjattaforma 1C: Intrapriża fuq C ++ и JavaScript, iżda wkoll applikazzjonijiet Java - b'mod partikolari l-ambjent ġdid ta 'żvilupp Għodod għall-Iżvilupp tal-Intrapriża ibbażat fuq Eclipse u server tal-messaġġier integrat profondament mal-pjattaforma - Sistemi ta' Interazzjoni.

Dħul

Ħafna drabi nużaw maven bħala sistema ta' bini għall-applikazzjonijiet Java, u f'dan l-artikolu qasir nixtiequ nitkellmu dwar waħda mill-problemi li kellna niffaċċjaw fil-proċess tal-organizzazzjoni tal-iżvilupp, u dwar l-approċċ li ppermetta li negħlbu dan. problema.

Prerekwiżiti u fluss tax-xogħol

Minħabba l-ispeċifiċitajiet ta 'żvilupp fil-proġetti maven tagħna, nużaw pjuttost ħafna moduli, dipendenzi u proġetti tat-tfal. In-numru ta 'fajls pom f'siġra waħda jista' jkun fl-għexieren jew saħansitra mijiet.

Esperjenza bl-użu flatten-maven-plugin biex tissimplifika l-verżjoni fil-proġetti maven

Jidher: xejn kbir, ħolquha darba u nsewha. Jekk għandek bżonn tibdel jew iżżid xi ħaġa fil-fajls kollha f'daqqa, hemm ħafna għodod konvenjenti fl-edituri u l-IDEs. X'inhi l-aktar bidla regolari komuni għal pom.xml? Aħna nemmnu li l-bidliet fil-verżjonijiet tal-proġett u d-dipendenzi. Forsi xi ħadd irid jargumenta ma 'dan, iżda din hija eżattament is-sitwazzjoni magħna. Ir-raġuni tinsab fil-fatt li, flimkien mal-qalba, qed niżviluppaw simultanjament ħafna mil-libreriji tagħna stess, u għar-riproduċibbiltà kostanti tar-riżultati tal-bini u l-ittestjar, l-użu ta 'snapshots ma jidhirniex approċċ konvenjenti. Għal din ir-raġuni, huwa meħtieġ li jiżdied in-numru tal-verżjoni fil-proġetti ma 'kull bini.

Barra minn hekk, minn żmien għal żmien, żviluppatur jeħtieġ li jibni l-fergħa tiegħu stess ta 'librerija u jiċċekkja l-funzjonalità tagħha kontra d-dipendenzi kollha, li għalihom irid ibiddel manwalment il-verżjoni tagħhom kollha.

Soluzzjoni inizjali

B'bidliet ta 'verżjoni frekwenti u multipli bħal dawn, irrid nissimplifika u awtomat il-proċess fi ħdan CI. Dan huwa fejn plugin konvenjenti u magħruf jiġi għas-salvataġġ. versions-maven-plugin - qabbadha u tniedi

mvn -N verżjonijiet: sett -DnewVersion=2.0.1

u Maven se tagħmel kollox kif suppost: se tgħaddi mill-ġerarkija minn fuq għal isfel, u tissostitwixxi l-verżjonijiet kollha - sbuħija! Issa dak kollu li jibqa 'huwa li tqajjem talba ta' ġibda, il-kollegi se jirrevedu l-bidliet, u tista 'malajr tingħaqad mat-trunk. Malajr? Ma jimpurtax kif ikun. Ftit mijiet pom.xml għal reviżjoni, u dan mhux qed jgħodd il-kodiċi. Barra minn hekk, ħadd ma huwa sigur minn kunflitti ta' amalgamazzjoni ma 'numru daqshekk kbir ta' fajls mibdula. Għandu jiġi nnutat hawnhekk li fil-proċess CI, il-bidliet fil-verżjoni jseħħu awtomatikament flimkien ma 'bidliet fil-funzjonalità, u mhux b'xi mod separatament.

Opportunitajiet ġodda

Għal ftit ikkalmajna u, rassenjati, ngħixu hekk sakemm il-guys minn Proġett Maven Apache Tibda mill-verżjoni 3.5.0-beta-1, Maven ma inkludietx appoġġ għall-hekk imsejħa "placeholders". L-essenza ta 'dawn is-sostituti hija li pom.xml minflok indikazzjoni speċifika tal-verżjoni tal-proġett, jintużaw varjabbli ${reviżjoni}, ${sha1} и ${changelist}. Il-valuri ta 'dawn il-proprjetajiet infushom huma stabbiliti jew fl-elementproprjetajiet>, jew jistgħu jiġu definiti permezz ta' proprjetà tas-sistema

mvn -Drevision=2.0.0 pakkett nadif

Il-valuri tal-proprjetà tas-sistema jieħdu preċedenza fuq il-valuri definiti fiproprjetajiet>.

Il-ġenitur

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-ġenitur
  L-ewwel CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -SNAPSHOT
    
  


Dixxendent

  4.0.0
  
    org.apache.maven.ci
    ci-ġenitur
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-tifel
   ...

Jekk trid tibni l-verżjoni 2.0.0-SNAPSHOT, imbagħad uża biss

    mvn -Drevision=2.0.0 pakkett nadif

Jekk trid tagħmel rilaxx, imbagħad reset SNAPSHOT

    mvn -Dchangelist= pakkett nadif

*L-eżempji ta’ hawn fuq huma meħuda minn oġġetti fuq il-websajt tal-Proġett Maven Apache

Realtà ħarxa

Kollox tajjeb u b'saħħtu, wasal iż-żmien li tħoss sens ta 'sodisfazzjon, imma le. Jirriżulta li dan il-metodu mhux se jaħdem għall-installazzjoni u l-iskjerament, peress li mhux se jiġi sostitwit fid-deskrizzjonijiet tal-artifatti ppubblikati fir-repożitorju ${reviżjoni} fuq it-tifsira tiegħu u maven mhux se jibqa’ jifhem x’jiġri.


    org.apache
    apache
    ${reviżjoni}

Dawl fit-tarf ta’ mina

Irridu nfittxu soluzzjoni għall-problema. Seta’ jsalva s-sitwazzjoni flatten-maven-plugin. Dan il-plugin isolvi l-varjabbli kollha fil-pom, iżda fl-istess ħin jaqta 'ħafna informazzjoni oħra li hija meħtieġa biss waqt l-assemblaġġ u mhix meħtieġa meta timporta artifatti ppubblikati fi proġetti oħra. Il-plugin ukoll "jiddritta" id-dipendenzi kollha tal-ġenituri u t-tfal, u bħala riżultat, ikollok pom ċatt li jinkludi dak kollu li għandek bżonn. L-inkonvenjent kien li jaqta’ wisq “extra”, li xejn ma kien jixraq lilna. Wara li studjat l-informazzjoni dwar l-iżvilupp ta 'dan il-plugin, irriżulta li aħna mhux l-uniċi fl-univers, u lura f'Awwissu 2018, inħoloq pull-request fuq Github fir-repożitorju tal-plugin bix-xewqa li jagħmilha possibbli biex niddeterminaw waħedna kif "tħassru" pom.xml. L-iżviluppaturi semgħu l-vuċijiet ta 'dawk li jbatu, u diġà f'Diċembru, bir-rilaxx tal-verżjoni l-ġdida 1.1.0, mod ġdid, resolveCiFriendliesOnly, deher fil-flaten-maven-plugin, li kien aktar adattat minn qatt qabel - tħalli pom.xml kif inhu, ħlief għall-element u jippermetti ${reviżjoni}, ${sha1} и ${changelist}.

Żieda ta 'plugin mal-proġett


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      veru
      resolveCiFriendliesOnly
    
    
      
        iċċattja
        riżorsi-proċess
        
          iċċattja
        
      
      
        iċċattja.naddaf
        nadif
        
          nadif
        
      
    
  

Magħmul!

Tmiem feliċi

Minn issa 'l quddiem, sabiex nibdlu l-verżjoni tal-proġett kollu u ngħarrfu d-dipendenzi kollha dwaru, irridu biss neditjaw l-elementreviżjoni> fl-għerq biss pom.xml. Mhux mija jew tnejn minn dawn il-fajls bl-istess bidla jaslu fir-reviżjoni, iżda wieħed. Ukoll, m'hemmx għalfejn tuża versions-maven-plugin.

Sors: www.habr.com

Żid kumment