Eksperyans lè l sèvi avèk flatten-maven-plugin pou senplifye vèsyon nan pwojè maven

sou nou

Nan 1C nou devlope pa sèlman yon platfòm 1C: Enterprise sou C ++ и JavaScript, men tou aplikasyon Java - an patikilye anviwònman devlopman nouvo Zouti Devlopman Antrepriz baze sou Eclipse ak yon sèvè mesaje pwofondman entegre ak platfòm la - Sistèm entèraksyon.

Antre

Nou pi souvan itilize maven kòm yon sistèm bati pou aplikasyon Java, ak nan atik sa a kout nou ta renmen pale sou youn nan pwoblèm yo ke nou te gen pou fè fas nan pwosesis la nan òganize devlopman, ak sou apwòch la ki te pèmèt nou simonte sa a. pwoblèm.

Prekondisyon ak workflow

Akòz spesifik devlopman nan pwojè maven nou yo, nou itilize anpil modil, depandans ak pwojè timoun. Nimewo a nan dosye pom nan yon pye bwa ka nan dizèn oswa menm dè santèn.

Eksperyans lè l sèvi avèk flatten-maven-plugin pou senplifye vèsyon nan pwojè maven

Li ta sanble: pa gen gwo zafè, yo te kreye li yon fwa epi yo bliye sou li. Si ou bezwen chanje oswa ajoute yon bagay nan tout fichye yo nan yon fwa, gen yon anpil nan zouti pratik nan editè ak IDEs. Ki chanjman regilye ki pi komen nan pom.xml? Nou kwè ke chanjman nan vèsyon pwojè ak depandans. Petèt yon moun pral vle diskite ak sa a, men sa a se egzakteman sitiyasyon an avèk nou. Rezon ki fè la manti nan lefèt ke, ansanm ak nwayo a, nou ap devlope ansanm anpil nan bibliyotèk pwòp nou yo, ak pou repwodibilite konstan nan bati ak rezilta tès yo, itilize nan snapshots pa sanble nou yon apwòch pratik. Pou rezon sa a, li nesesè ogmante nimewo vèsyon an nan pwojè ak chak bati.

Epitou, de tan zan tan, yon pwomotè bezwen bati pwòp branch li nan yon bibliyotèk epi tcheke fonksyonalite li yo kont tout depandans, pou ki li gen manyèlman chanje vèsyon an nan tout nan yo.

Inisyal solisyon

Avèk chanjman sa yo souvan ak plizyè vèsyon, mwen vle senplifye ak otomatize pwosesis la nan CI. Sa a se kote yon pratik, byen li te ye Plugin vin pote sekou. vèsyon-maven-plugin - konekte li epi lanse li

mvn -N vèsyon: mete -DnewVersion=2.0.1

ak Maven pral fè tout bagay jan li ta dwe: li pral kouri nan yerachi a soti anwo jouk anba, ranplase tout vèsyon - bote! Koulye a, tout sa ki rete se ogmante yon demann rale, kòlèg yo pral revize chanjman yo, epi ou ka byen vit rantre nan kòf la. Byen vit? Kèlkeswa jan li ye. Yon koup la san pom.xml pou revizyon, epi sa a pa konte kòd la. Anplis de sa, pèsonn pa an sekirite kont konfli fizyone ak yon gwo kantite dosye chanje. Li ta dwe remake isit la ke nan pwosesis la CI, chanjman vèsyon yo fèt otomatikman ansanm ak chanjman nan fonksyonalite, epi yo pa yon jan kanmenm separeman.

Nouvo karakteristik

Pandan yon ti tan nou te kalme epi, lè nou te reziye nou, nou te viv konsa jiskaske mesye yo soti nan Pwojè Maven Apache Kòmanse soti nan vèsyon 3.5.0-beta-1, Maven pa t 'gen ladan sipò pou sa yo rele "placeholders". Sans ranplasan sa yo se sa pom.xml olye pou yo yon endikasyon espesifik nan vèsyon pwojè a, varyab yo itilize ${revizyon}, ${sha1} и ${changelist}. Valè pwopriyete sa yo tèt yo mete swa nan eleman anpwopriyete>, oswa yo ka defini atravè yon pwopriyete sistèm

mvn -Drevision=2.0.0 pwòp pake

Valè pwopriyete sistèm yo pran priyorite sou valè yo defini nanpwopriyete>.

Paran

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-paran
  Premye CI Zanmitay
  ${revizyon}${sha1}${changelist}
  ...
  
    1.3.1
    - SNAPSHOT
    
  


Desandan

  4.0.0
  
    org.apache.maven.ci
    ci-paran
    ${revizyon}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-pitit
   ...

Si ou vle bati vèsyon 2.0.0-SNAPSHOT, Lè sa a, jis itilize

    mvn -Drevision=2.0.0 pwòp pake

Si ou vle fè yon lage, Lè sa a, jis reset SNAPSHOT

    mvn -Dchangelist= pake pwòp

*Egzanp ki pi wo yo pran nan atik sou sit wèb Maven Apache Project la

Reyalite piman bouk

Tout bagay se bon ak an sante, li lè yo santi yon sans de satisfaksyon, men non. Li sanble ke metòd sa a pa pral travay pou enstale ak deplwaye, paske li pa pral ranplase nan deskripsyon yo nan zafè ki te pibliye nan repozitwa a. ${revizyon} sou siyifikasyon li yo ak maven pa pral konprann ankò ki sa li nan tout sou.


    org.apache
    apache
    ${revizyon}

Yon limyè nan fen yon tinèl

Nou bezwen chèche yon solisyon pou pwoblèm nan. Te kapab sove sitiyasyon an plati-maven-plugin. Plugin sa a rezoud tout varyab nan pom a, men an menm tan an koupe yon anpil nan lòt enfòmasyon ki sèlman nesesè pandan asanble epi ki pa nesesè lè enpòte zafè pibliye nan lòt pwojè. Plugin la tou "redrese" tout depandans paran-pitit, epi kòm yon rezilta, ou jwenn yon pom plat ki gen ladan tout sa ou bezwen. Enkonvenyan an te ke li koupe soti twòp "siplemantè", ki pa t 'kostim nou ditou. Apre w fin etidye enfòmasyon sou devlopman Plugin sa a, li te vin wè ke nou pa sèlman nan linivè a, epi tounen nan mwa Out 2018, yo te kreye yon demann rale sou Github nan depo plugin a ak dezi a fè li posib. pou detèmine poukont nou kijan pou "gate" pom.xml. Devlopè yo te koute vwa moun ki soufri yo, e deja nan mwa desanm, ak liberasyon an nan nouvo vèsyon an 1.1.0, yon nouvo mòd, resolveCiFriendliesOnly, parèt nan plati-maven-plugin la, ki te pi apwopriye pase tout tan - li kite. pom.xml jan se, eksepte pou eleman an ak pèmèt ${revizyon}, ${sha1} и ${changelist}.

Ajoute yon plugin nan pwojè a


  
    org.codehaus.mojo
    plati-maven-plugin
    1.1.0
    
      vre
      resolveCiFriendliesOnly
    
    
      
        plati
        pwosesis-resous
        
          plati
        
      
      
        plati.pwòp
        pwòp
        
          pwòp
        
      
    
  

Fè!

Ala bon sa bon

Depi koulye a, yo nan lòd yo chanje vèsyon an nan tout pwojè a epi kite tout depandans konnen sou li, nou jis bezwen edite eleman an.revizyon> nan jis rasin lan pom.xml. Se pa yon santèn oswa de nan dosye sa yo ki gen menm chanjman ki rive nan revizyon an, men youn. Oke, pa gen okenn nesesite pou itilize vèsyon-maven-plugin.

Sous: www.habr.com

Add nouvo kòmantè