Esperienza cù flatten-maven-plugin per simplificà a versione in i prughjetti maven

Quelli di noi

À 1C sviluppemu micca solu una piattaforma 1C: Impresa nantu C ++ и JavaScript, ma ancu applicazioni Java - in particulare u novu ambiente di sviluppu Strumenti di sviluppu di l'impresa basatu annantu à Eclipse è un servitore di messenger prufondamente integratu cù a piattaforma - Sistemi di interazzione.

Plus

U più spessu usamu Maven cum'è un sistema di custruzzione per l'applicazioni Java, è in questu brevi articulu vulemu parlà di unu di i prublemi chì avemu avutu à affruntà in u prucessu di urganizazione di u sviluppu, è di l'approcciu chì ci hà permessu di superà questu. prublema.

Prerequisiti è flussu di travagliu

A causa di e specificità di u sviluppu in i nostri prughjetti maven, usemu assai moduli, dipendenze è prughjetti di i zitelli. U numaru di schedarii pom in un arbulu pò esse in decine o ancu centu.

Esperienza cù flatten-maven-plugin per simplificà a versione in i prughjetti maven

Sembra: micca grande affare, anu creatu una volta è s'hè scurdatu. Sè avete bisognu di cambià o aghjunghje qualcosa in tutti i schedari à una volta, ci sò assai strumenti convenienti in editori è IDE. Chì ghjè u cambiamentu regulare più cumuni à pom.xml? Cridemu chì i cambiamenti in e versioni di u prughjettu è e dipendenze. Forsi qualcunu vulete discutiri cun questu, ma questu hè esattamente a situazione cun noi. U mutivu si trova in u fattu chì, cù u kernel, avemu sviluppatu simultaneamente assai di e nostre biblioteche, è per a riproducibilità constante di i risultati di custruzzione è teste, l'usu di snapshots ùn ci pare micca un accostu còmuda. Per quessa, hè necessariu di elevà u numeru di versione in i prughjetti cù ogni custruzzione.

Inoltre, da u tempu à u tempu, un sviluppatore hà bisognu di custruisce u so propiu ramu di una biblioteca è verificate a so funziunalità contr'à tutte e dipendenze, per quale hà da cambià manualmente a versione di tutti.

Soluzione iniziale

Cù tali cambiamenti frequenti è multiplici di versione, vogliu simplificà è automatizà u prucessu in CI. Questu hè induve un plugin còmuda, ben cunnisciutu, vene in salvezza. versions-maven-plugin - cunnette lu è lanciari lu

mvn -N versioni: set -DnewVersion=2.0.1

è Maven farà tuttu ciò chì deve: correrà à traversu a ghjerarchia da cima à fondu, rimpiazzà tutte e versioni - bellezza! Avà tuttu ciò chì resta hè di elevà una dumanda di pull, i culleghi riviseranu i cambiamenti, è pudete unisce rapidamente à u troncu. Prestu? Ùn importa micca cumu hè. Un paru di centu pom.xml per rivisione, è questu ùn hè micca cuntatu u codice. In più, nimu hè salvu da cunflitti di fusione cù un gran numaru di schedarii cambiati. Ci hè da nutà quì chì in u prucessu CI, i cambiamenti di versione sò automaticamente cù i cambiamenti di funziunalità, è micca in modu separatu.

Novità

Per un tempu ci calmu è, essendu rassegnati, avemu campatu cusì finu à chì i picciotti di Prughjettu Maven Apache Partendu da a versione 3.5.0-beta-1, Maven ùn hà micca include supportu per i chjamati "placeholders". L'essenza di questi sustituti hè questu pom.xml invece di una indicazione specifica di a versione di u prugettu, i variàbili sò usati ${revision}, ${sha1} и ${changelist}. I valori di sti pruprietà stessi sò stabiliti sia in l'elementuPruprietà>, o ponu esse definitu attraversu una pruprietà di u sistema

mvn -Drevision=2.0.0 pacchettu pulito

I valori di pruprietà di u sistema anu a precedenza annantu à i valori definiti inPruprietà>.

Parente

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-parent
  Prima CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -STANTANEA
    
  


Discendente

  4.0.0
  
    org.apache.maven.ci
    ci-parent
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-figliolu
   ...

Se vulete custruisce a versione 2.0.0-SNAPSHOT, allora solu aduprà

    mvn -Drevision=2.0.0 pacchettu pulito

Se vulete fà una liberazione, allora solu resettate SNAPSHOT

    mvn -Dchangelist= pacchettu pulito

* L'esempii sopra sò pigliati da articuli nant'à u situ web di Maven Apache Project

A dura realità

Tuttu hè bonu è sanu, hè ora di sente un sensu di satisfaczione, ma micca. Risulta chì stu metudu ùn funziona micca per installà è implementà, postu chì ùn serà micca rimpiazzatu in e descrizzioni di l'artefatti publicati in u repository. ${revision} nant'à u so significatu è maven ùn capirà più ciò chì si tratta.


    org.apache
    apache
    ${revision}

Una luce à a fine di un tunnel

Avemu bisognu di circà una suluzione à u prublema. Puderia salvà a situazione flatten-maven-plugin. Stu plugin risolve tutte e variàbili in u pom, ma à u stessu tempu tagliate assai altre infurmazione chì hè necessariu solu durante l'assemblea è ùn hè micca necessariu quandu importa l'artifacti publicati in altri prughjetti. U plugin hè ancu "straightens out" tutte e dipendenze parenti-figlioli, è in u risultatu, avete un pom flat chì include tuttu ciò chì avete bisognu. L'inconvenimentu era chì tagliava troppu "extra", chì ùn ci cunvene micca in tuttu. Dopu avè studiatu l'infurmazioni nantu à u sviluppu di stu plugin, hè risultatu chì ùn simu micca i soli in l'universu, è in l'aostu 2018, una pull-request hè stata creata nantu à Github in u repository di plugin cù u desideriu di fà pussibule. per determinà nantu à a nostra manera di "spoil" pom.xml. I sviluppori ascultò a voce di quelli chì soffrenu, è digià in dicembre, cù a liberazione di a nova versione 1.1.0, un novu modu, resolveCiFriendliesOnly, apparsu in u flatten-maven-plugin, chì era più adattatu chè mai - abbanduneghja. pom.xml cum'è, eccettu per l'elementu è permette ${revision}, ${sha1} и ${changelist}.

Aghjunghjendu un plugin à u prugettu


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      veru
      risolve CiFriendliesOnly
    
    
      
        appiattà
        prucessu-risorse
        
          appiattà
        
      
      
        appiattà.pulita
        pulita
        
          pulita
        
      
    
  

Fattu!

Felice fine

Da avà, per cambià a versione di u prughjettu sanu è chì tutte e dipendenze cunnoscenu, avemu solu bisognu di edità l'elementu.rivisione> solu in a radica pom.xml. Micca centu o dui di sti schedari cù u listessu cambiamentu arrivanu à a rivista, ma unu. Ebbè, ùn ci hè bisognu di utilizà versions-maven-plugin.

Source: www.habr.com

Add a comment