maven долбоорлорунда версиялоону жөнөкөйлөтүү үчүн flatten-maven-plugin колдонуу тажрыйбасы

Биз жөнүндө

1Сте биз платформаны гана эмес, иштеп чыгабыз 1С: Ишкана боюнча C ++ и JavaScript, бирок ошондой эле Java колдонмолору - атап айтканда, жаңы иштеп чыгуу чөйрөсү Ишкананы өнүктүрүү куралдары Eclipse жана платформа менен терең интеграцияланган мессенжер серверинин негизинде - Өз ара аракеттенүү системалары.

кирүү

Биз көбүнчө mavenди Java тиркемелери үчүн куруу системасы катары колдонобуз жана бул кыска макалада биз иштеп чыгууну уюштуруу процессинде туш болгон көйгөйлөрдүн бири жана аны жеңүүгө мүмкүндүк берген мамиле жөнүндө сөз кылгыбыз келет. көйгөй.

Алдын ала шарттар жана иш процесси

Биздин maven долбоорлорубуздун өнүгүү өзгөчөлүктөрүнөн улам биз көптөгөн модулдарды, көз карандылыктарды жана балдар долбоорлорун колдонобуз. Бир дарактагы пом файлдарынын саны ондогон же жүздөгөн болушу мүмкүн.

maven долбоорлорунда версиялоону жөнөкөйлөтүү үчүн flatten-maven-plugin колдонуу тажрыйбасы

Көрүнүп тургандай: чоң маселе жок, алар аны бир жолу жаратып, унутуп коюшкан. Эгер сиз бир эле учурда бардык файлдарда бир нерсени өзгөртүү же кошуу керек болсо, редакторлордо жана IDEлерде көптөгөн ыңгайлуу куралдар бар. pom.xml үчүн эң кеңири таралган үзгүлтүксүз өзгөртүү кайсы? Биз долбоордун версиялары жана көз карандылыктары өзгөрөт деп ишенебиз. Балким, кимдир бирөө муну менен талашкысы келет, бирок бизде так ушундай. Мунун себеби, ядро ​​менен бирге, биз бир эле учурда өзүбүздүн көптөгөн китепканаларыбызды өнүктүрүп жаткандыгыбызда, ал эми куруунун жана тестирлөөнүн жыйынтыктарынын дайыма кайталанышы үчүн, сүрөттү колдонуу бизге ыңгайлуу ыкмадай көрүнбөйт. Ушул себептен улам, ар бир куруу менен долбоорлордо версия номерин жогорулатуу зарыл.

Ошондой эле, мезгил-мезгили менен иштеп чыгуучу китепкананын өзүнүн филиалын куруп, анын функционалдуулугун бардык көз карандылыктарга каршы текшериши керек, ал үчүн алардын бардыгынын версиясын кол менен өзгөртүшү керек.

Баштапкы чечим

Мындай тез-тез жана бир нече версия өзгөртүүлөр менен, мен CI ичиндеги процессти жөнөкөйлөштүрүүнү жана автоматташтыргым келет. Бул жерде ыңгайлуу, белгилүү плагин жардамга келет. versions-maven-plugin - аны туташтыруу жана ишке киргизүү

mvn -N версиялары: set -DnewVersion=2.0.1

жана Maven бардыгын каалагандай кылат: ал бардык версияларды алмаштырып, иерархияны өйдөдөн ылдыйга карай өтөт - сулуулук! Эми болгону тартуу өтүнүчүн көтөрүү гана калды, кесиптештер өзгөрүүлөрдү карап чыгышат жана сиз тез эле магистрага кошула аласыз. Тезби? Кандай болбосун. Бир эки жүз pom.xml карап чыгуу үчүн, жана бул кодду эсепке албайт. Мындан тышкары, мынчалык көп сандагы өзгөртүлгөн файлдар менен биригүү чыр-чатактарынан эч ким коопсуз эмес. Бул жерде белгилей кетүү керек, CI процессинде версиянын өзгөрүүлөрү кандайдыр бир жол менен өзүнчө эмес, функциялык өзгөрүүлөр менен бирге автоматтык түрдө ишке ашат.

жаңы мүмкүнчүлүктөр

Бир аз тынчып, кызматтан кетип, жигиттерге чейин ушинтип жашадык Maven Apache долбоору 3.5.0-бета-1 версиясынан баштап, Maven "толтургучтар" деп аталган колдоону камтыган эмес. Бул алмаштыргычтардын маңызы мына ушунда pom.xml долбоордун версиясынын белгилүү бир көрсөткүчүнүн ордуна өзгөрмөлөр колдонулат ${ревизия}, ${sha1} и ${changelist}. Бул касиеттердин баалуулуктары же элементте белгиленеткасиеттери>, же алар система касиети аркылуу аныкталышы мүмкүн

mvn -Drevision = 2.0.0 таза пакет

Системанын касиетинин баалуулуктары аныкталган баалуулуктардан жогору тураткасиеттери>.

Ата-эне

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-ата-эне
  Биринчи CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    - SNAPSHOT
    
  


тукуму

  4.0.0
  
    org.apache.maven.ci
    ci-ата-эне
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-бала
   ...

Эгерде сиз 2.0.0-SNAPSHOT версиясын кургуңуз келсе, анда жөн гана колдонуңуз

    mvn -Drevision = 2.0.0 таза пакет

Эгерде сиз чыгарууну кааласаңыз, анда жөн гана SNAPSHOTти баштапкы абалга келтириңиз

    mvn -Dchangelist = таза пакет

*Жогорудагы мисалдар алынган макалалар Maven Apache долбоорунун веб-сайтында

ачуу чындык

Баары жакшы жана ден-соолукта, канааттануу сезимин сезүүгө убакыт келди, бирок жок. Көрсө, бул ыкма орнотуу жана жайылтуу үчүн иштебейт, анткени ал репозиторийде жарыяланган артефакттардын сыпаттамаларында алмаштырылбайт. ${ревизия} анын мааниси боюнча жана Мавен мындан ары анын эмне жөнүндө экенин түшүнбөй калат.


    org.apache
    apache
    ${ревизия}

Туннелдин аягында жарык

Биз маселени чечүүнүн жолун издешибиз керек. Кырдаалды сактап калса болмок flatten-maven-плагин. Бул плагин помдогу бардык өзгөрмөлөрдү чечет, бирок ошол эле учурда чогултуу учурунда гана керек болгон жана жарыяланган артефакттарды башка долбоорлорго импорттоодо кереги жок башка көптөгөн маалыматтарды кесип салат. Плагин ошондой эле бардык ата-энелик көз карандылыкты "түзөтөт" жана натыйжада сиз керектүү нерселердин бардыгын камтыган жалпак пом аласыз. Ыңгайсыздыгы, ал өтө көп "кошумчаларды" алып салганында болду, бул бизге такыр туура келбейт. Бул плагинди иштеп чыгуу боюнча маалыматты изилдеп чыккандан кийин, биз ааламда жалгыз эмес экенибиз белгилүү болду жана 2018-жылдын августунда Github-да плагин репозиторийинде аны мүмкүн кылуу каалоосу менен тартуу өтүнүчү түзүлгөн. pom.xml кантип "бузарыбызды" өзүбүз аныктоого. Иштеп чыгуучулар жапа чеккендердин үнүн угуп, декабрь айында 1.1.0 жаңы версиясынын чыгышы менен, flatten-maven-плагинде жаңы резолюция CiFriendliesOnly режими пайда болду, ал мурдагыдан да ылайыктуу болгон - ал кетет. pom.xml элементин кошпогондо жана мүмкүндүк берет ${ревизия}, ${sha1} и ${changelist}.

Проектке плагин кошуу


  
    org.codehaus.mojo
    flatten-maven-плагин
    1.1.0
    
      чын
      solutionCiFriendliesOnly
    
    
      
        тегиздөө
        процесс-ресурстары
        
          тегиздөө
        
      
      
        тегиздөө.таза
        таза
        
          таза
        
      
    
  

Кереги жок!

Бактылуу аягы

Мындан ары, бүткүл долбоордун версиясын өзгөртүү жана бардык көз карандылыктар бул жөнүндө билиши үчүн, биз жөн гана элементти түзөтүшүбүз керек.кайрадан кароо> жөн гана тамырында pom.xml. Ошол эле өзгөртүү менен бул файлдардын жүз же эки эмес, карап чыгууга келет, бирок бир. Ооба, колдонуунун кереги жок versions-maven-plugin.

Source: www.habr.com

Комментарий кошуу