Profiad o ddefnyddio ategyn flatten-maven i symleiddio fersiynau mewn prosiectau maven

Amdanom ni

Yn 1C rydym yn datblygu nid yn unig llwyfan 1C: Menter ar C ++ и Javascript, ond hefyd cymwysiadau Java - yn enwedig yr amgylchedd datblygu newydd Offer Datblygu Menter yn seiliedig ar Eclipse a gweinydd negesydd wedi'i integreiddio'n ddwfn â'r platfform - Systemau Rhyngweithio.

Mynediad

Rydym yn aml yn defnyddio maven fel system adeiladu ar gyfer cymwysiadau Java, ac yn yr erthygl fer hon hoffem siarad am un o'r problemau y bu'n rhaid i ni eu hwynebu yn y broses o drefnu datblygiad, ac am y dull a ganiataodd i ni oresgyn hyn. problem.

Rhagofynion a llif gwaith

Oherwydd manylion y datblygiad yn ein prosiectau maven, rydym yn defnyddio cryn dipyn o fodiwlau, dibyniaethau a phrosiectau plant. Gall nifer y ffeiliau pom mewn un goeden fod yn y degau neu hyd yn oed gannoedd.

Profiad o ddefnyddio ategyn flatten-maven i symleiddio fersiynau mewn prosiectau maven

Mae'n ymddangos: dim llawer iawn, fe wnaethon nhw ei greu unwaith ac anghofio amdano. Os oes angen i chi newid neu ychwanegu rhywbeth ym mhob ffeil ar unwaith, mae yna lawer o offer cyfleus mewn golygyddion a DRhA. Beth yw'r newid rheolaidd mwyaf cyffredin i pom.xml? Credwn fod newidiadau mewn fersiynau prosiect a dibyniaethau. Efallai y bydd rhywun eisiau dadlau â hyn, ond dyma’r union sefyllfa gyda ni. Mae'r rheswm yn gorwedd yn y ffaith ein bod ni, ynghyd â'r cnewyllyn, yn datblygu llawer o'n llyfrgelloedd ein hunain ar yr un pryd, ac er mwyn atgynhyrchu canlyniadau adeiladu a phrofi yn gyson, nid yw'n ymddangos bod defnyddio cipluniau yn ddull cyfleus i ni. Am y rheswm hwn, mae angen codi rhif y fersiwn mewn prosiectau gyda phob adeilad.

Hefyd, o bryd i'w gilydd, mae angen i ddatblygwr adeiladu ei gangen ei hun o lyfrgell a gwirio ei swyddogaeth yn erbyn pob dibyniaeth, y mae'n rhaid iddo newid fersiwn pob un ohonynt â llaw.

Datrysiad cychwynnol

Gyda newidiadau mor aml a lluosog, rwyf am symleiddio ac awtomeiddio'r broses o fewn CI. Dyma lle mae ategyn cyfleus, adnabyddus yn dod i'r adwy. fersiynau-maven-plugin - ei gysylltu a'i lansio

fersiynau mvn -N: set -DnewVersion=2.0.1

a bydd Maven yn gwneud popeth fel y dylai: bydd yn rhedeg trwy'r hierarchaeth o'r top i'r gwaelod, gan ddisodli pob fersiwn - harddwch! Nawr y cyfan sydd ar ôl yw codi cais tynnu, bydd cydweithwyr yn adolygu'r newidiadau, a gallwch chi ymuno â'r gefnffordd yn gyflym. Yn gyflym? Ni waeth sut y mae. Cwpl o gannoedd pom.xml i'w hadolygu, ac nid yw hyn yn cyfrif y cod. Yn ogystal, nid oes unrhyw un yn ddiogel rhag gwrthdaro uno â nifer mor fawr o ffeiliau wedi'u newid. Dylid nodi yma, yn y broses CI, bod newidiadau fersiwn yn digwydd yn awtomatig ynghyd â newidiadau mewn ymarferoldeb, ac nid rhywsut ar wahân.

Cyfleoedd newydd

Am sbel fe wnaethon ni dawelu ac, ar ôl ymddiswyddo, roedden ni'n byw fel yna tan y bois o Prosiect Apache Maven Gan ddechrau o fersiwn 3.5.0-beta-1, nid oedd Maven yn cynnwys cefnogaeth i “ddalwyr” fel y'u gelwir. Hanfod yr eilyddion hyn yw hynny pom.xml yn lle arwydd penodol o fersiwn y prosiect, defnyddir newidynnau ${ adolygu}, ${sha1} и ${changelist}. Mae gwerthoedd yr eiddo hyn eu hunain yn cael eu gosod naill ai yn yr elfeneiddo>, neu gellir eu diffinio trwy briodwedd system

mvn -Drevision=2.0.0 pecyn glân

Gwerthoedd eiddo system yn cymryd blaenoriaeth dros y gwerthoedd a ddiffinnir yneiddo>.

Rhiant

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-riant
  Cyntaf CI Cyfeillgar
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -CRYNO
    
  


disgynnydd

  4.0.0
  
    org.apache.maven.ci
    ci-riant
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-blentyn
   ...

Os ydych chi am adeiladu fersiwn 2.0.0-SNAPSHOT, yna defnyddiwch

    mvn -Drevision=2.0.0 pecyn glân

Os ydych chi am wneud datganiad, yna dim ond ailosod SNAPSHOT

    mvn -Dchangelist = pecyn glân

*Mae'r enghreifftiau uchod wedi'u cymryd o erthyglau ar wefan Prosiect Maven Apache

Realiti creulon

Mae popeth yn dda ac yn iach, mae'n bryd teimlo ymdeimlad o foddhad, ond na. Mae'n ymddangos na fydd y dull hwn yn gweithio ar gyfer gosod a defnyddio, gan na fydd yn cael ei ddisodli yn y disgrifiadau o arteffactau a gyhoeddir yn y storfa ${ adolygu} ar ei ystyr ac ni fydd maven bellach yn deall beth mae'n ei olygu.


    org.apache
    apache
    ${ adolygu}

Golau ym mhen draw twnnel

Mae angen inni chwilio am ateb i’r broblem. Gallai fod wedi achub y sefyllfa flatten-maven-plug. Mae'r ategyn hwn yn datrys yr holl newidynnau yn y pom, ond ar yr un pryd yn torri allan llawer o wybodaeth arall sydd ei angen yn unig yn ystod y cynulliad ac nad oes ei angen wrth fewnforio arteffactau cyhoeddedig i brosiectau eraill. Mae'r ategyn hefyd yn “sythu” pob dibyniaeth rhiant-plentyn, ac o ganlyniad, rydych chi'n cael pom fflat sy'n cynnwys popeth sydd ei angen arnoch chi. Yr anghyfleustra oedd ei fod yn cael gwared ar ormod o “ychwanegol”, nad oedd yn siwtio ni o gwbl. Ar ôl astudio'r wybodaeth am ddatblygiad yr ategyn hwn, daeth i'r amlwg nad ni yw'r unig rai yn y bydysawd, ac yn ôl ym mis Awst 2018, crëwyd cais tynnu ar Github yn y storfa ategyn gyda'r awydd i'w wneud yn bosibl i benderfynu ar ein pennau ein hunain sut i “ddifetha” pom.xml. Gwrandawodd y datblygwyr ar leisiau'r rhai sy'n dioddef, ac eisoes ym mis Rhagfyr, gyda rhyddhau'r fersiwn newydd 1.1.0, ymddangosodd modd newydd, resolutionCiFriendliesOnly, yn y flatten-maven-plugin, a oedd yn fwy addas nag erioed - mae'n gadael pom.xml fel y mae, heblaw yr elfen ac yn caniatáu ${ adolygu}, ${sha1} и ${changelist}.

Ychwanegu ategyn i'r prosiect


  
    org.codehaus.mojo
    flatten-maven-plug
    1.1.0
    
      gwir
      datrysCyfeillionYn Unig
    
    
      
        gwastatau
        prosesau-adnoddau
        
          gwastatau
        
      
      
        fflat.clean
        glan
        
          glan
        
      
    
  

Wedi'i wneud!

Diwedd hapus

O hyn ymlaen, er mwyn newid fersiwn y prosiect cyfan a gadael i bob dibyniaeth wybod amdano, does ond angen i ni olygu'r elfen.adolygu> mewn dim ond y gwraidd pom.xml. Nid yw cant neu ddau o'r ffeiliau hyn gyda'r un newid yn cyrraedd yr adolygiad, ond un. Wel, nid oes angen defnyddio fersiynau-maven-plugin.

Ffynhonnell: hab.com

Ychwanegu sylw