Maven loyihalarida versiya yaratishni soddalashtirish uchun flatten-maven-plugin-dan foydalanish tajribasi

Biz haqimizda

1C da biz nafaqat platformani ishlab chiqamiz 1C: Korxona haqida C ++ ΠΈ JavaScript, shuningdek, Java ilovalari - xususan, yangi ishlab chiqish muhiti Korxonani rivojlantirish vositalari Eclipse va platforma bilan chuqur integratsiyalangan messenjer serveriga asoslangan - O'zaro ta'sir tizimlari.

kirish

Biz ko'pincha maven-dan Java ilovalari uchun qurilish tizimi sifatida foydalanamiz va ushbu qisqa maqolada biz ishlab chiqishni tashkil qilish jarayonida duch keladigan muammolardan biri va buni engib o'tishga imkon bergan yondashuv haqida gaplashmoqchimiz. muammo.

Old shartlar va ish jarayoni

Maven loyihalarimizda rivojlanishning o'ziga xos xususiyatlaridan kelib chiqqan holda, biz juda ko'p modullar, bog'liqliklar va bolalar loyihalaridan foydalanamiz. Bitta daraxtdagi pom fayllar soni o'nlab yoki hatto yuzlab bo'lishi mumkin.

Maven loyihalarida versiya yaratishni soddalashtirish uchun flatten-maven-plugin-dan foydalanish tajribasi

Ko'rinishidan: katta ish yo'q, ular buni bir marta yaratdilar va bu haqda unutdilar. Agar siz bir vaqtning o'zida barcha fayllarga biror narsani o'zgartirishingiz yoki qo'shishingiz kerak bo'lsa, muharrirlar va IDE-larda juda ko'p qulay vositalar mavjud. Pom.xml ga eng ko'p muntazam o'zgartirish nima? Loyiha versiyalari va bog'liqliklari o'zgarishiga ishonamiz. Ehtimol, kimdir bu bilan bahslashmoqchi bo'ladi, lekin bizda aynan shunday holat. Buning sababi shundaki, yadro bilan bir qatorda biz bir vaqtning o'zida ko'plab o'z kutubxonalarimizni rivojlantirmoqdamiz va qurish va sinov natijalarining doimiy takrorlanishi uchun oniy tasvirlardan foydalanish bizga qulay yondashuv bo'lib tuyulmaydi. Shu sababli, har bir qurilish bilan loyihalarda versiya raqamini oshirish kerak.

Bundan tashqari, vaqti-vaqti bilan ishlab chiquvchi kutubxonaning o'z filialini qurishi va uning funksionalligini barcha bog'liqliklarga nisbatan tekshirishi kerak, buning uchun u ularning barchasining versiyasini qo'lda o'zgartirishi kerak.

Dastlabki yechim

Tez-tez va ko'p versiya o'zgarishlari bilan men CI ichidagi jarayonni soddalashtirish va avtomatlashtirishni xohlayman. Bu erda qulay, taniqli plagin yordamga keladi. versiyalar-maven-plagin - uni ulang va ishga tushiring

mvn -N versiyalari: set -DnewVersion=2.0.1

va Maven hamma narsani kerak bo'lganda qiladi: u yuqoridan pastgacha ierarxiya bo'ylab o'tadi va barcha versiyalarni almashtiradi - go'zallik! Endi faqat tortishish so'rovini ko'tarish qoladi, hamkasblar o'zgarishlarni ko'rib chiqadilar va siz tezda magistralga qo'shilishingiz mumkin. Tezdami? Qanday bo'lmasin. Bir necha yuz pom.xml ko'rib chiqish uchun, va bu kodni hisobga olmaydi. Bundan tashqari, hech kim bunday katta miqdordagi o'zgartirilgan fayllar bilan birlashma to'qnashuvlaridan xavfsiz emas. Shuni ta'kidlash kerakki, CI jarayonida versiya o'zgarishlari qandaydir tarzda alohida emas, balki funksionallikdagi o'zgarishlar bilan birga avtomatik ravishda sodir bo'ladi.

Yangi xususiyatlar

Bir muncha vaqt biz tinchlandik va iste'foga chiqdik, biz yigitlargacha shunday yashadik Maven Apache loyihasi 3.5.0-beta-1 versiyasidan boshlab, Maven "to'ldiruvchi" deb nomlangan qo'llab-quvvatlashni o'z ichiga olmaydi. Bu o'rinbosarlarning mohiyati shundan iboratki pom.xml loyiha versiyasining o'ziga xos ko'rsatkichi o'rniga o'zgaruvchilar ishlatiladi ${revision}, ${sha1} ΠΈ ${changelist}. Ushbu xususiyatlarning qiymatlari o'zlari yoki elementda o'rnatiladixususiyatlari> yoki ular tizim xususiyati orqali aniqlanishi mumkin

mvn -Drevision = 2.0.0 toza paket

Tizim mulki qiymatlari belgilangan qiymatlardan ustun turadixususiyatlari>.

Ota-onalar

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-ota-ona
  Birinchi CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    - SNAPSHOT
    
  


Avlod

  4.0.0
  
    org.apache.maven.ci
    ci-ota-ona
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-bola
   ...

Agar siz 2.0.0-SNAPSHOT versiyasini yaratmoqchi bo'lsangiz, shunchaki foydalaning

    mvn -Drevision = 2.0.0 toza paket

Agar siz nashr qilishni xohlasangiz, SNAPSHOT-ni qayta o'rnating

    mvn -Dchangelist = toza paket

*Yuqoridagi misollar manbadan olingan maqolalar Maven Apache loyihasi veb-saytida

Qattiq haqiqat

Hamma narsa yaxshi va sog'lom, qoniqish hissini his qilish vaqti keldi, lekin yo'q. Ma'lum bo'lishicha, bu usul o'rnatish va joylashtirish uchun ishlamaydi, chunki u omborda nashr etilgan artefaktlarning tavsiflarida almashtirilmaydi. ${revision} uning ma'nosi haqida va maven endi bu nima haqida ekanligini tushunmaydi.


    org.apache
    apache
    ${revision}

Tunnel oxiridagi yorug'lik

Muammoga yechim izlashimiz kerak. Vaziyatni saqlab qolishi mumkin edi flatten-maven-plugin. Ushbu plagin pomdagi barcha o'zgaruvchilarni hal qiladi, lekin ayni paytda faqat yig'ish paytida kerak bo'ladigan va nashr etilgan artefaktlarni boshqa loyihalarga import qilishda kerak bo'lmaydigan ko'plab boshqa ma'lumotlarni o'chirib tashlaydi. Plagin shuningdek, barcha ota-onalarga bog'liqliklarni "to'g'rilaydi" va buning natijasida siz kerakli hamma narsani o'z ichiga olgan tekis pom olasiz. Noqulaylik shundaki, u juda ko'p "qo'shimcha" ni kesib tashlaydi, bu bizga umuman mos kelmadi. Ushbu plaginni ishlab chiqish haqidagi ma'lumotlarni o'rganib chiqqandan so'ng, biz koinotda yagona emasligimiz ma'lum bo'ldi va 2018 yil avgust oyida Github-da plaginlar omborida buni amalga oshirish istagi bilan pull-so'rov yaratilgan. pom.xml-ni qanday "buzish" kerakligini o'zimiz aniqlashimiz. Ishlab chiquvchilar azob chekayotganlarning ovozini tinglashdi va dekabr oyida yangi 1.1.0 versiyasining chiqarilishi bilan har qachongidan ham mos keladigan flatten-maven-plaginida yangi ResolutionCiFriendliesOnly rejimi paydo bo'ldi - u tark etadi. pom.xml bo'lgani kabi, elementdan tashqari va imkon beradi ${revision}, ${sha1} ΠΈ ${changelist}.

Loyihaga plagin qo'shish


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      rost
      ResolutionCiFriendliesOnly
    
    
      
        tekislash
        jarayon-resurslar
        
          tekislash
        
      
      
        tekislash.tozalash
        toza
        
          toza
        
      
    
  

Bajar!

Baxtli xotima

Bundan buyon, butun loyihaning versiyasini o'zgartirish va barcha bog'liqliklarga bu haqda xabar berish uchun biz faqat elementni tahrirlashimiz kerak.taftish> faqat ildizda pom.xml. Ko'rib chiqishda bir xil o'zgarishlarga ega bo'lgan yuz yoki ikkita fayl emas, balki bittasi keladi. Xo'sh, foydalanishga hojat yo'q versiyalar-maven-plagin.

Manba: www.habr.com

a Izoh qo'shish