Biz haqimizda
1C da biz nafaqat platformani ishlab chiqamiz haqida и , shuningdek, Java ilovalari - xususan, yangi ishlab chiqish muhiti Eclipse va platforma bilan chuqur integratsiyalangan messenjer serveriga asoslangan - .
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.

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 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 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 . 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
