dwarna
F'1C aħna niżviluppaw mhux biss pjattaforma fuq и , iżda wkoll applikazzjonijiet Java - b'mod partikolari l-ambjent ġdid ta 'żvilupp ibbażat fuq Eclipse u server tal-messaġġier integrat profondament mal-pjattaforma - .
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.

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 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 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 . 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
