Përvoja e përdorimit të shtojcës flatten-maven për të thjeshtuar versionimin në projektet maven

Rreth nesh

Në 1C ne zhvillojmë jo vetëm një platformë 1C: Ndërmarrja mbi C ++ и JavaScript, por edhe aplikacionet Java - në veçanti mjedisi i ri i zhvillimit Mjetet e Zhvillimit të Ndërmarrjeve bazuar në Eclipse dhe një server mesazher të integruar thellësisht me platformën - Sistemet e ndërveprimit.

Hyrje

Ne më së shpeshti përdorim maven si një sistem ndërtimi për aplikacionet Java, dhe në këtë artikull të shkurtër do të donim të flisnim për një nga problemet me të cilat duhej të përballeshim në procesin e organizimit të zhvillimit dhe për qasjen që na lejoi ta kapërcejmë këtë problem.

Parakushtet dhe rrjedha e punës

Për shkak të specifikave të zhvillimit në projektet tona maven, ne përdorim mjaft module, varësi dhe projekte për fëmijë. Numri i skedarëve pom në një pemë mund të jetë në dhjetëra apo edhe qindra.

Përvoja e përdorimit të shtojcës flatten-maven për të thjeshtuar versionimin në projektet maven

Duket: nuk ka punë të madhe, ata e krijuan një herë dhe e harruan atë. Nëse keni nevojë të ndryshoni ose shtoni diçka në të gjithë skedarët menjëherë, ka shumë mjete të përshtatshme në redaktues dhe IDE. Cili është ndryshimi më i zakonshëm i rregullt në pom.xml? Ne besojmë se ndryshimet në versionet dhe varësitë e projektit. Ndoshta dikush do të dëshirojë të debatojë me këtë, por kjo është pikërisht situata me ne. Arsyeja qëndron në faktin se, së bashku me kernelin, ne po zhvillojmë njëkohësisht shumë nga bibliotekat tona, dhe për riprodhueshmërinë e vazhdueshme të rezultateve të ndërtimit dhe testimit, përdorimi i fotografive nuk na duket një qasje e përshtatshme. Për këtë arsye, është e nevojshme të rritet numri i versionit në projekte me çdo ndërtim.

Gjithashtu, herë pas here, një zhvillues duhet të ndërtojë degën e tij të një biblioteke dhe të kontrollojë funksionalitetin e saj ndaj të gjitha varësive, për të cilat ai duhet të ndryshojë manualisht versionin e të gjithave.

Zgjidhja fillestare

Me ndryshime kaq të shpeshta dhe të shumëfishta të versioneve, unë dua të thjeshtoj dhe automatizoj procesin brenda CI. Këtu vjen në shpëtim një shtojcë e përshtatshme dhe e njohur. versions-maven-plugin - lidheni atë dhe niseni atë

mvn -N versionet:set -DnewVersion=2.0.1

dhe Maven do të bëjë gjithçka siç duhet: do të kalojë nëpër hierarki nga lart poshtë, duke zëvendësuar të gjitha versionet - bukurinë! Tani gjithçka që mbetet është të ngrini një kërkesë për tërheqje, kolegët do të shqyrtojnë ndryshimet dhe ju mund të bashkoheni shpejt me trungun. Shpejt? Pavarësisht se si është. Nja dyqind pom.xml për shqyrtim, dhe kjo nuk po llogarit kodin. Për më tepër, askush nuk është i sigurt nga konfliktet e bashkimit me një numër kaq të madh skedarësh të ndryshuar. Duhet të theksohet këtu se në procesin CI, ndryshimet e versionit ndodhin automatikisht së bashku me ndryshimet në funksionalitet, dhe jo disi veçmas.

Karakteristika të reja

Për një kohë u qetësuam dhe, pasi dhamë dorëheqjen, jetuam kështu deri në djemtë nga Projekti Maven Apache Maven, duke filluar me versionin 3.5.0-beta-1, nuk përfshinte mbështetje për të ashtuquajturat "mbajtës të vendeve" të versioneve. Thelbi i këtyre zëvendësuesve është se pom.xml në vend të një treguesi specifik të versionit të projektit, përdoren variabla ${rishikim}, ${sha1} и ${kangjelist}. Vetë vlerat e këtyre vetive vendosen ose në elementPronat>, ose ato mund të përcaktohen përmes një vetie të sistemit

mvn -Drevision=2.0.0 paketë e pastër

Vlerat e vetive të sistemit kanë përparësi ndaj vlerave të përcaktuara nëPronat>.

Prindi

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-prind
  E para CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -SNAPSHT
    
  


Pasardhës

  4.0.0
  
    org.apache.maven.ci
    ci-prind
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-fëmijë
   ...

Nëse dëshironi të ndërtoni versionin 2.0.0-SNAPSHOT, atëherë thjesht përdorni

    mvn -Drevision=2.0.0 paketë e pastër

Nëse dëshironi të bëni një version, atëherë thjesht rivendosni SNAPSHOT

    mvn -Dchangelist= paketë e pastër

* Shembujt e mësipërm janë marrë nga Artikull në faqen e internetit të Projektit Maven Apache

Realitet i ashpër

Gjithçka është e mirë dhe e shëndetshme, është koha për të ndjerë një ndjenjë kënaqësie, por jo. Rezulton se kjo metodë nuk do të funksionojë për instalim dhe vendosje, pasi nuk do të zëvendësohet në përshkrimet e objekteve të publikuara në depo ${rishikim} për kuptimin e saj dhe maven nuk do ta kuptojë më se për çfarë bëhet fjalë.


    org.apache
    apache
    ${rishikim}

Një dritë në fund të një tuneli

Ne duhet të kërkojmë një zgjidhje për problemin. Mund ta shpëtonte situatën flatten-maven-plugin. Kjo shtojcë zgjidh të gjitha variablat në pom, por në të njëjtën kohë shkurton shumë informacione të tjera që nevojiten vetëm gjatë montimit dhe nuk nevojiten kur importoni objekte të publikuara në projekte të tjera. Shtojca gjithashtu "rregullon" të gjitha varësitë prind-fëmijë, dhe si rezultat, ju merrni një pom të sheshtë që përfshin gjithçka që ju nevojitet. Bezdisja ishte se shkurtonte shumë "shtesë", gjë që nuk na përshtatej fare. Pas studimit të informacionit për zhvillimin e kësaj shtojce, doli që ne nuk jemi të vetmit në univers, dhe përsëri në gusht 2018, u krijua një kërkesë tërheqjeje në Github në depon e shtojcave me dëshirën për ta bërë të mundur të përcaktojmë vetë se si të “prishet” pom.xml. Zhvilluesit dëgjuan zërat e atyre që vuanin dhe tashmë në dhjetor, me lëshimin e versionit të ri 1.1.0, një modalitet i ri, solveCiFriendliesOnly, u shfaq në shtojcën flatten-maven, e cila ishte më e përshtatshme se kurrë - largohet pom.xml siç është, përveç elementit dhe lejon ${rishikim}, ${sha1} и ${kangjelist}.

Shtimi i një shtojce në projekt


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      e vërtetë
      zgjidh CiFriendliesOnly
    
    
      
        rrafshoj
        proces-burimet
        
          rrafshoj
        
      
      
        rrafshoj.i pastër
        pastër
        
          pastër
        
      
    
  

Done!

Fund i lumtur

Që tani e tutje, për të ndryshuar versionin e të gjithë projektit dhe për të bërë të ditur të gjitha varësitë për të, ne vetëm duhet të modifikojmë elementinrishikim> vetëm në rrënjë pom.xml. Në shqyrtim nuk mbërrijnë njëqind apo dy nga këto dosje me të njëjtin ndryshim, por një. Epo, nuk ka nevojë të përdoret versions-maven-plugin.

Burimi: www.habr.com

Shto një koment