Maven layihələrində versiyanı sadələşdirmək üçün flatten-maven-plugin istifadə təcrübəsi

Haqqımızda

1C-də biz təkcə platforma hazırlamırıq 1C: Müəssisə haqqında C ++ и JavaScript, həm də Java proqramları - xüsusən də yeni inkişaf mühiti Enterprise Development Tools Eclipse və platforma ilə dərindən inteqrasiya olunmuş messenger serveri əsasında - Qarşılıqlı təsir sistemləri.

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.

Maven layihələrində versiyanı sadələşdirmək üçün flatten-maven-plugin istifadə təcrübəsi

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 Maven Apache Layihəsi 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 Məqalə 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 flatten-maven-plugin. 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

Добавить комментарий