Haqqımızda
1C-də biz təkcə platforma hazırlamırıq haqqında и , həm də Java proqramları - xüsusən də yeni inkişaf mühiti Eclipse və platforma ilə dərindən inteqrasiya olunmuş messenger serveri əsasında - .
Giriş
Biz tez-tez maven-dən Java proqramları üçün bir quruluş sistemi kimi istifadə edirik və bu qısa məqalədə inkişafın təşkili prosesində qarşılaşmalı olduğumuz problemlərdən biri və bunun öhdəsindən gəlməyə imkan verən yanaşma haqqında danışmaq istərdik. problem.
İlkin şərtlər və iş axını
Maven layihələrimizdə inkişaf xüsusiyyətlərinə görə biz kifayət qədər çox modul, asılılıq və uşaq layihələrindən istifadə edirik. Bir ağacdakı pom fayllarının sayı onlarla və hətta yüzlərlə ola bilər.

Görünür: böyük bir şey deyil, bir dəfə yaratdılar və unutdular. Bütün fayllarda bir anda nəyisə dəyişdirmək və ya əlavə etmək lazımdırsa, redaktorlarda və IDE-lərdə çoxlu rahat alətlər var. pom.xml-ə ən çox edilən müntəzəm dəyişiklik hansıdır? İnanırıq ki, layihə versiyalarında və asılılıqlarda dəyişikliklər. Bəlkə kimsə bununla mübahisə etmək istəyəcək, amma bizdə vəziyyət tam olaraq belədir. Səbəb ondan ibarətdir ki, nüvə ilə yanaşı, biz eyni vaxtda öz kitabxanalarımızın çoxunu inkişaf etdiririk və qurulma və sınaq nəticələrinin daimi təkrarlanması üçün anlıq görüntülərdən istifadə bizə rahat yanaşma kimi görünmür. Bu səbəbdən layihələrdə versiya nömrəsini hər qurma ilə artırmaq lazımdır.
Həmçinin, zaman-zaman tərtibatçı öz kitabxana filialını qurmalı və onun funksionallığını bütün asılılıqlara qarşı yoxlamalıdır, bunun üçün o, hamısının versiyasını əl ilə dəyişdirməlidir.
İlkin həll
Tez-tez və çoxlu versiya dəyişiklikləri ilə mən CI daxilində prosesi sadələşdirmək və avtomatlaşdırmaq istəyirəm. Rahat, tanınmış plaqinin köməyinə gəldiyi yer budur. versiyalar-maven-plugin - qoşun və işə salın
mvn -N versiyaları:set -DnewVersion=2.0.1
və Maven hər şeyi lazım olduğu kimi edəcək: bütün versiyaları əvəz edərək yuxarıdan aşağıya doğru iyerarxiyadan keçəcək - gözəllik! İndi yalnız bir çəkmə sorğusu qaldırmaq qalır, həmkarlar dəyişiklikləri nəzərdən keçirəcək və siz tez bir zamanda magistrala qoşula bilərsiniz. Tez? Necə olursa olsun. Bir neçə yüz pom.xml nəzərdən keçirmək üçün və bu kodu saymır. Bundan əlavə, heç kim bu qədər çox sayda dəyişdirilmiş fayl ilə birləşmə münaqişələrindən təhlükəsiz deyil. Burada qeyd etmək lazımdır ki, CI prosesində versiya dəyişiklikləri hər hansı bir şəkildə deyil, funksionallıqdakı dəyişikliklərlə birlikdə avtomatik olaraq baş verir.
Yeni funksiyalar
Bir müddət sakitləşdik və istefa verdik, gələnə qədər belə yaşadıq 3.5.0-beta-1 versiyasından başlayaraq, Maven sözdə “yer tutucular” üçün dəstəyi daxil etməyib. Bu əvəzedicilərin mahiyyəti ondan ibarətdir ki pom.xml layihə versiyasının xüsusi göstəricisi əvəzinə dəyişənlərdən istifadə olunur ${revision}, ${sha1} и ${dəyişiklikçi}. Bu xassələrin dəyərləri ya elementdə müəyyən edilirxassələri> və ya onlar sistem xassəsi vasitəsilə müəyyən edilə bilər
mvn -Drevision = 2.0.0 təmiz paket
Sistem xassəsinin dəyərləri müəyyən edilmiş dəyərlərdən üstündürxassələri>.
Valideyn
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-valideyn
İlk CI Dostu
${revision}${sha1}${dəyişiklikçi}
...
1.3.1
- SNAPSHOT
nəsli
4.0.0
org.apache.maven.ci
ci-valideyn
${revision}${sha1}${dəyişiklikçi}
org.apache.maven.ci
ci-uşaq
...
2.0.0-SNAPSHOT versiyasını qurmaq istəyirsinizsə, sadəcə istifadə edin
mvn -Drevision = 2.0.0 təmiz paket
Buraxılış etmək istəyirsinizsə, sadəcə olaraq SNAPSHOT-u sıfırlayın
mvn -Dchangelist = təmiz paket
*Yuxarıdakı nümunələr buradan götürülüb Maven Apache Layihə saytında
Sərt reallıq
Hər şey yaxşıdır və sağlamdır, məmnunluq hiss etməyin vaxtıdır, amma yox. Məlum oldu ki, bu üsul quraşdırma və yerləşdirmə üçün işləməyəcək, çünki depoda dərc olunan artefaktların təsvirlərində əvəz edilməyəcəkdir. ${revision} onun mənası haqqında və maven artıq nə olduğunu başa düşməyəcək.
org.apache
apache
${revision}
Tunelin sonunda bir işıq
Problemin həllini axtarmalıyıq. Vəziyyəti xilas edə bilərdi . Bu plagin pomdakı bütün dəyişənləri həll edir, lakin eyni zamanda yalnız montaj zamanı lazım olan və dərc edilmiş artefaktları digər layihələrə idxal edərkən lazım olmayan bir çox digər məlumatları kəsir. Plugin eyni zamanda bütün valideyn-uşaq asılılıqlarını "düzləşdirir" və nəticədə sizə lazım olan hər şeyi ehtiva edən düz bir pom alırsınız. Narahatlıq o idi ki, o, bizə heç yaraşmayan çox “əlavə” kəsir. Bu plaqinin inkişafı ilə bağlı məlumatları öyrəndikdən sonra məlum oldu ki, kainatda tək biz deyilik və hələ 2018-ci ilin avqustunda, plagin deposunda Github-da bunu mümkün etmək istəyi ilə çəkilmə sorğusu yaradılıb. pom.xml-ni necə “xorlayacağımızı” özümüz müəyyən etmək. Tərtibatçılar əziyyət çəkənlərin səsinə qulaq asdılar və artıq dekabr ayında, 1.1.0 yeni versiyasının buraxılması ilə, həmişəkindən daha uyğun olan flatten-maven-plugin-də həll CiFriendliesOnly adlı yeni rejim meydana çıxdı - o, tərk edir. element istisna olmaqla, pom.xml olduğu kimi və imkan verir ${revision}, ${sha1} и ${dəyişiklikçi}.
Layihəyə plagin əlavə edilməsi
org.codehaus.mojo
flatten-maven-plugin
1.1.0
doğru
Yalnızca CiFriendlies
düzləşdirmək
proses resursları
düzləşdirmək
düzləşdirmək.təmizləmək
təmiz
təmiz
Bitti!
Xoşbəxt sonluq
Bundan sonra, bütün layihənin versiyasını dəyişdirmək və bütün asılılıqlara bu barədə məlumat vermək üçün sadəcə elementi redaktə etməliyik.təftiş> yalnız kökdə pom.xml. Eyni dəyişikliyə malik bu faylların yüz və ya ikisi yox, bir nəfərə çatır. Yaxşı, istifadə etməyə ehtiyac yoxdur versiyalar-maven-plugin.
Mənbə: www.habr.com
