Pengalaman nggunakake flatten-maven-plugin kanggo nyederhanakake versi ing proyek maven

О нас

Ing 1C, kita ora mung ngembangake platform 1C: Perusahaan ing C ++ ΠΈ JavaScript, nanging uga aplikasi Java - utamane lingkungan pangembangan anyar Piranti Pangembangan Perusahaan adhedhasar Eclipse lan server utusan sing terintegrasi banget karo platform - Sistem Interaksi.

entri

Kita paling kerep nggunakake maven minangka sistem mbangun kanggo aplikasi Java, lan ing artikel cendhak iki kita arep kanggo pirembagan bab salah siji masalah sing kudu kita ngadhepi ing proses ngatur pembangunan, lan bab pendekatan sing ngidini kita kanggo ngatasi iki. masalah.

Prasyarat lan alur kerja

Amarga spesifik pangembangan ing proyek maven, kita nggunakake cukup akeh modul, dependensi lan proyek anak. Jumlah file pom ing siji wit bisa puluhan utawa malah atusan.

Pengalaman nggunakake flatten-maven-plugin kanggo nyederhanakake versi ing proyek maven

Iku bakal katon: ora masalah gedhe, padha digawe iku sapisan lan lali bab iku. Yen sampeyan kudu ngganti utawa nambah soko ing kabeh file bebarengan, ana akeh alat trep ing editors lan IDE. Apa owah-owahan biasa sing paling umum kanggo pom.xml? Kita pitados bilih owah-owahan ing versi project lan dependensi. Mbok menawa ana wong sing pengin mbantah babagan iki, nanging iki persis karo kahanan kita. AlesanΓ© dumunung ing kasunyatan sing, bebarengan karo kernel, kita bebarengan ngembangaken akeh perpustakaan kita dhewe, lan kanggo reproducibility pancet saka mbangun lan asil testing, nggunakake jepretan ora katon kanggo kita pendekatan trep. Mulane, perlu ngunggahake nomer versi ing proyek kanthi saben mbangun.

Kajaba iku, saka wektu kanggo wektu, pangembang kudu mbangun cabang perpustakaan dhewe lan mriksa fungsine marang kabeh dependensi, kang kudu kanthi manual ngganti versi kabeh mau.

Solusi wiwitan

Kanthi owah-owahan versi sing kerep lan akeh, aku pengin nyederhanakake lan ngotomatisasi proses ing CI. Iki minangka plugin sing trep lan kondhang teka kanggo ngluwari. versi-maven-plugin - nyambung lan miwiti

mvn -N versi: nyetel -DnewVersion = 2.0.1

lan Maven bakal nindakake kabeh minangka ngirim: bakal mbukak liwat hirarki saka ndhuwur kanggo ngisor, ngganti kabeh versi - kaendahan! Saiki sing isih ana yaiku ngunggahake panjaluk tarik, kolega bakal mriksa owah-owahan kasebut, lan sampeyan bisa kanthi cepet gabung karo trunk. Cepet? Ora ketompo carane iku. Saperangan atus pom.xml kanggo review, lan iki ora ngetang kode. Kajaba iku, ora ana sing aman saka konflik gabungan karo file sing diganti akeh. Perlu dicathet ing kene yen ing proses CI, owah-owahan versi kedadeyan kanthi otomatis bebarengan karo owah-owahan fungsi, lan ora kanthi kapisah.

Fitur anyar

Kanggo sawetara wektu kita tenang lan, sawise mundur, kita urip kaya ngono nganti wong lanang Proyek Apache Maven Miwiti saka versi 3.5.0-beta-1, Maven ora kalebu dhukungan kanggo sing diarani "placeholder". Inti saka pengganti kasebut yaiku pom.xml tinimbang indikasi tartamtu saka versi project, variabel digunakake ${revisi}, ${sha1} ΠΈ ${daftar owah-owahan}. Nilai-nilai properti kasebut dhewe disetel ing unsur kasebutsitus>, utawa bisa ditetepake liwat properti sistem

mvn -Drevision = 2.0.0 paket resik

Nilai properti sistem luwih dhisik tinimbang nilai sing ditemtokake ingsitus>.

Tiyang sepah

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-wong tuwa
  First CI Friendly
  ${revisi}${sha1}${changelist}
  ...
  
    1.3.1
    - GAMBAR
    
  


Keturunan

  4.0.0
  
    org.apache.maven.ci
    ci-wong tuwa
    ${revisi}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-bocah
   ...

Yen sampeyan pengin mbangun versi 2.0.0-SNAPSHOT, banjur mung nggunakake

    mvn -Drevision = 2.0.0 paket resik

Yen sampeyan pengin nggawe release, banjur mung ngreset SNAPSHOT

    mvn -Dchangelist= paket resik

*Conto ing ndhuwur dijupuk saka artikel ing situs web Maven Apache Project

kasunyatan atos

Kabeh apik lan sehat, wektune kanggo ngrasakake rasa marem, nanging ora. Pranyata cara iki ora bisa digunakake kanggo nginstal lan nyebarake, amarga ora bakal diganti ing deskripsi artefak sing diterbitake ing gudang. ${revisi} ing makna lan maven ora bakal ngerti maneh apa iku.


    org.apache
    apache
    ${revisi}

A cahya ing mburi trowongan

Kita kudu golek solusi kanggo masalah kasebut. Bisa nylametake kahanan flatten-maven-plugin. Plugin iki ngrampungake kabeh variabel ing pom, nanging ing wektu sing padha ngilangi akeh informasi liyane sing mung dibutuhake sajrone perakitan lan ora dibutuhake nalika ngimpor artefak sing diterbitake menyang proyek liyane. Plugin uga "mlurusake" kabeh dependensi wong tuwa-anak, lan minangka asil, sampeyan entuk pom flat sing nyakup kabeh sing dibutuhake. Sing ora nyaman yaiku ngilangi "ekstra" sing akeh banget, sing ora cocog karo kita. Sawise nyinaoni informasi babagan pangembangan plugin iki, ternyata kita ora mung siji-sijine ing jagad iki, lan ing wulan Agustus 2018, panjaluk narik digawe ing Github ing repositori plugin kanthi kepinginan supaya bisa ditindakake. kanggo nemtokake dhewe carane "ngrusak" pom.xml. Pangembang ngrungokake swarane wong sing nandhang sangsara, lan wis ing Desember, kanthi rilis versi anyar 1.1.0, mode anyar, resolveCiFriendliesOnly, muncul ing flatten-maven-plugin, sing luwih cocok tinimbang sadurunge - godhonge. pom.xml minangka, kajaba kanggo unsur lan ngidini ${revisi}, ${sha1} ΠΈ ${daftar owah-owahan}.

Nambahake plugin menyang proyek kasebut


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      bener
      resolveCiFriendliesOnly
    
    
      
        rata
        proses-sumber daya
        
          rata
        
      
      
        rata.resik
        resik
        
          resik
        
      
    
  

Rampung!

happy ending

Wiwit saiki, kanggo ngganti versi kabeh proyek lan supaya kabeh dependensi ngerti babagan iki, kita mung kudu ngowahi unsur kasebut.Revisi> mung ing oyod pom.xml. Ora satus utawa loro file kasebut kanthi owah-owahan sing padha teka ing review, nanging siji. Inggih, ora perlu nggunakake versi-maven-plugin.

Source: www.habr.com

Add a comment