Erfarung mat Flatten-Maven-Plugin fir d'Versioun an de Maven Projeten ze vereinfachen

Iwwer eis

Bei 1C entwéckelen mir net nëmmen eng Plattform 1C: Entreprise op C ++ и Javascript, awer och Java Uwendungen - besonnesch dat neit Entwécklungsëmfeld Enterprise Entwécklung Tools baséiert op Eclipse an engem Messenger Server déif integréiert mat der Plattform - Interaktioun Systemer.

Element

Mir benotzen meeschtens Maven als Build System fir Java Uwendungen, an an dësem kuerzen Artikel wëlle mir iwwer ee vun de Probleemer schwätzen, déi mir am Prozess vun der Organisatioun vun der Entwécklung konfrontéiert hunn, an iwwer d'Approche déi eis erlaabt huet dëst ze iwwerwannen. Problem.

Viraussetzunge a Workflow

Wéinst de Spezifizitéiten vun der Entwécklung an eise Maven-Projeten benotze mir zimmlech vill Moduler, Ofhängegkeeten a Kannerprojeten. D'Zuel vu Pom-Dateien an engem Bam kann an Zénger oder souguer Honnerte sinn.

Erfarung mat Flatten-Maven-Plugin fir d'Versioun an de Maven Projeten ze vereinfachen

Et géif schéngen: kee groussen Deal, si hunn et eemol erstallt an et vergiess. Wann Dir eppes an all Dateie gläichzäiteg ännere musst oder addéiere musst, ginn et vill praktesch Tools an Editeuren an IDEs. Wat ass déi heefegst regelméisseg Ännerung op pom.xml? Mir gleewen, datt Ännerungen am Projet Versiounen an Ofhängegkeeten. Vläit wëll een domat streiden, mä dat ass genau d'Situatioun bei eis. De Grond läit an der Tatsaach, datt, zesumme mam Kernel, mir gläichzäiteg vill vun eisen eegene Bibliothéiken entwéckelen, a fir d'konstante Reproducibilitéit vu Bau- an Testresultater, d'Benotzung vu Snapshots schéngt eis net eng praktesch Approche ze maachen. Aus dësem Grond ass et néideg d'Versiounsnummer a Projeten mat all Build ze erhéijen.

Och vun Zäit zu Zäit muss en Entwéckler seng eege Filial vun enger Bibliothéik bauen a seng Funktionalitéit géint all Ofhängegkeet iwwerpréiwen, fir déi hien d'Versioun vun allen manuell muss änneren.

Éischt Léisung

Mat esou dacks a multiple Versiounsännerungen, wëll ech de Prozess am CI vereinfachen an automatiséieren. Dëst ass wou e prakteschen, bekannte Plugin zur Rettung kënnt. versions-maven-plugin - konnektéieren et a starten et

mvn -N Versiounen:set -DnewVersion=2.0.1

an Maven wäert alles maachen wéi et soll: et wäert duerch d'Hierarchie vun uewe bis ënnen lafen, all Versiounen ersetzen - Schéinheet! Elo bleift et nëmmen eng Pull-Ufro ze erhéijen, d'Kollege wäerten d'Ännerungen iwwerpréiwen, an Dir kënnt séier an de Stamm bäitrieden. Schnell? Egal wéi et ass. E puer honnert pom.xml fir Iwwerpréiwung, an dëst zielt net de Code. Zousätzlech ass keen sécher vu Konflikter mat esou enger grousser Zuel vu geännerten Dateien ze fusionéieren. Et sollt hei bemierkt ginn datt am CI-Prozess Versiounsännerungen automatesch zesumme mat Ännerungen an der Funktionalitéit geschéien, an net iergendwéi getrennt.

Nei Fonctiounen

Eng Zäit laang hu mir eis berouegt an, nodeems mir eis demissionéiert hunn, sou gelieft bis d'Jongen aus Maven Apache Project Vun der Versioun 3.5.0-beta-1 un, huet Maven keng Ënnerstëtzung fir sougenannte "Plazhalter" abegraff. D'Essenz vun dësen Ersatzspiller ass dat pom.xml amplaz vun engem spezifeschen Indikatioun vum Projet Versioun, Verännerlechen benotzt ${Revisioun}, ${sha1} и ${changelist}. D'Wäerter vun dësen Eegeschafte selwer ginn entweder am Element festgeluechtEegeschafte>, oder se kënnen duerch eng Systemeigenschaft definéiert ginn

mvn -Drevision=2.0.0 propper Package

System Eegeschafte Wäerter hu Virrang iwwer Wäerter definéiert anEegeschafte>.

Elterendeel

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-Elteren
  Éischt CI Frëndschaft
  ${Revision}${sha1}${changelist}
  ...
  
    1.3.1
    - SNAPSHOT
    
  


Nokommen

  4.0.0
  
    org.apache.maven.ci
    ci-Elteren
    ${Revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-Kand
   ...

Wann Dir wëllt Versioun 2.0.0-SNAPSHOT bauen, da benotzt just

    mvn -Drevision=2.0.0 propper Package

Wann Dir eng Verëffentlechung wëllt maachen, da setzt just SNAPSHOT zréck

    mvn -Dchangelist= propper Package

* D'Beispiller hei uewen sinn aus Artikelen op der Maven Apache Project Websäit

Hard Realitéit

Alles ass gutt a gesond, et ass Zäit e Gefill vun Zefriddenheet ze fillen, awer nee. Et stellt sech eraus datt dës Method net funktionnéiert fir ze installéieren an z'installéieren, well se net an de Beschreiwunge vun Artefakte publizéiert am Repository ersat gëtt ${Revisioun} op seng Bedeitung a Maven wäert net méi verstoen, ëm wat et geet.


    org.apache
    apache
    ${Revisioun}

E Liicht am Enn vun engem Tunnel

Mir mussen no enger Léisung fir de Problem sichen. Konnt d'Situatioun retten flaach-maven-plugin. Dëse Plugin léist all Variabelen an der Pom, awer gläichzäiteg schneidt vill aner Informatioun aus, déi nëmme während der Versammlung gebraucht gëtt an net gebraucht gëtt wann Dir publizéiert Artefakte an aner Projeten importéiert. De Plugin "riicht" och all Elterendeel-Kand Ofhängegkeeten aus, an als Resultat kritt Dir e flaach Pom deen alles enthält wat Dir braucht. D'Onbequemlechkeet war, datt et zevill "Extra" ausschneit, wat eis guer net gepasst huet. Nodeems Dir d'Informatioun iwwer d'Entwécklung vun dësem Plugin studéiert huet, huet et erausgestallt datt mir net déi eenzeg am Universum sinn, an am August 2018 gouf eng Pull-Request op Github am Plugin Repository erstallt mam Wonsch et méiglech ze maachen fir eleng ze bestëmmen, wéi een pom.xml "verdéngt". D'Entwéckler hunn d'Stëmme vun deene Leiden nogelauschtert, a schonn am Dezember, mat der Verëffentlechung vun der neier Versioun 1.1.0, ass en neie Modus, resolveCiFriendliesOnly, am Flatten-Maven-Plugin opgetaucht, dee méi gëeegent war wéi jee - et verléisst pom.xml wéi ass, ausser d'Element an erlaabt ${Revisioun}, ${sha1} и ${changelist}.

Füügt e Plugin zum Projet


  
    org.codehaus.mojo
    flaach-maven-plugin
    1.1.0
    
      wouer
      resolveCiFriendliesOnly
    
    
      
        flaach
        Prozess Ressourcen
        
          flaach
        
      
      
        flaach.propper
        propper
        
          propper
        
      
    
  

Gemaach!

Glécklech Enn

Vun elo un, fir d'Versioun vum ganze Projet z'änneren an all Ofhängegkeeten doriwwer ze wëssen, brauche mir just d'Element z'ännerenVersioun> just an der Wuerzel pom.xml. Net honnert oder zwee vun dësen Dateie mat der selwechter Ännerung kommen op d'Iwwerpréiwung, awer een. Gutt, et ass net néideg ze benotzen versions-maven-plugin.

Source: will.com

Setzt e Commentaire