Таҷрибаи истифодаи flatten-maven-plugin барои содда кардани нусхабардорӣ дар лоиҳаҳои maven

Дар бораи мо

Дар 1С мо на танҳо платформаро таҳия мекунем 1С: Корхона ба C ++ и JavaScript, балки инчунин барномаҳои Java - махсусан муҳити нави рушд Воситаҳои рушди корхона дар асоси Eclipse ва сервери паёмнависӣ бо платформа амиқ муттаҳид карда шудааст - Системаҳои мутақобила.

даромад

Мо аксар вақт maven-ро ҳамчун як системаи сохтани замимаҳои Java истифода мебарем ва дар ин мақолаи кӯтоҳ мо мехоҳем дар бораи яке аз мушкилоте, ки дар раванди ташкили таҳияи он рӯ ба рӯ шудем ва дар бораи равише, ки ба мо имкон дод, ки ин мушкилотро бартараф кунем. проблема.

Шартҳои пешакӣ ва ҷараёни кор

Бо назардошти хусусиятҳои рушд дар лоиҳаҳои maven мо, мо хеле зиёди модулҳо, вобастагӣ ва лоиҳаҳои кӯдаконаро истифода мебарем. Шумораи файлҳои pom дар як дарахт метавонад даҳҳо ва ҳатто садҳо бошад.

Таҷрибаи истифодаи flatten-maven-plugin барои содда кардани нусхабардорӣ дар лоиҳаҳои maven

Чунин ба назар мерасад: кори калон нест, як бор офариданд ва фаромӯш карданд. Агар ба шумо лозим ояд, ки якбора дар ҳама файлҳо чизеро тағир диҳед ё илова кунед, дар муҳаррирҳо ва IDE асбобҳои зиёди мувофиқ мавҷуданд. Тағйироти маъмултарин ба pom.xml кадом аст? Мо боварӣ дорем, ки тағирот дар версияҳои лоиҳа ва вобастагӣ. Шояд касе бо ин бахс кардан мехохад, аммо дар мо айнан хамин аст. Сабаб дар он аст, ки дар баробари ядро, мо ҳамзамон бисёре аз китобхонаҳои шахсии худро таҳия мекунем ва барои такрори доимии натиҷаҳои сохтмон ва санҷиш, истифодаи аксҳо ба назари мо муносибати мувофиқ ба назар намерасад. Аз ин сабаб, рақами версияро дар лоиҳаҳо бо ҳар як сохтмон баланд кардан лозим аст.

Инчунин, гоҳ-гоҳ ба таҳиякунанда лозим аст, ки филиали китобхонаи шахсии худро созад ва фаъолияти онро аз ҳама вобастагӣ тафтиш кунад, ки барои он ӯ бояд версияи ҳамаи онҳоро дастӣ иваз кунад.

Ҳалли ибтидоӣ

Бо чунин тағйироти зуд-зуд ва сершумори версия, ман мехоҳам равандро дар дохили CI содда ва автоматӣ кунам. Дар ин ҷо як плагини қулай ва маъруф ба наҷот меояд. версияҳои-maven-плагин - онро пайваст кунед ва оғоз кунед

mvn -N версияҳои: маҷмӯи -DnewVersion = 2.0.1

ва Maven ҳама чизро тавре ки лозим аст, иҷро мекунад: он аз иерархия аз боло то поён мегузарад ва ҳама версияҳоро иваз мекунад - зебоӣ! Ҳоло танҳо як дархости ҷалб кардан боқӣ мемонад, ҳамкорон тағиротро баррасӣ хоҳанд кард ва шумо метавонед зуд ба танаи ҳамроҳ шавед. Ба зудӣ? Новобаста аз он ки чӣ гуна аст. Якчанд сад pom.xml барои баррасии, ва ин аст, коди ҳисоб нест,. Илова бар ин, ҳеҷ кас аз ихтилофҳои якҷоя бо шумораи зиёди файлҳои тағирёфта эмин нест. Дар ин ҷо бояд қайд кард, ки дар раванди CI, тағирёбии версия ба таври худкор дар баробари тағирёбии функсия ба амал меояд, на ба таври алоҳида.

Хусусиятҳои нав

Мо муддате ором шудем ва худамонро тарк карда, ҳамин тавр зиндагӣ кардем, то бачаҳо аз Лоиҳаи Maven Apache Аз версияи 3.5.0-beta-1 сар карда, Maven дастгирии ба истилоҳ "ҷонишинҳо" -ро дар бар нагирифт. Мохияти ин ивазкунандахо аз он иборат аст pom.xml ба ҷои нишондоди мушаххаси версияи лоиҳа, тағирёбандаҳо истифода мешаванд ${ревизия}, ${sha1} и ${тағйирдиҳанда}. Арзишҳои худи ин хосиятҳо ё дар элемент муқаррар карда мешавандобъектҳо>, ё онҳо метавонанд тавассути моликияти система муайян карда шаванд

mvn -Drevision = 2.0.0 бастаи тоза

Арзишҳои моликияти система нисбат ба арзишҳои муайяншуда бартарӣ дорандобъектҳо>.

Волидон

  4.0.0
  
    org.apache
    апачи
    18
  
  org.apache.maven.ci
  ци-падар
  Аввалин CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    - FOTO
    
  


насл

  4.0.0
  
    org.apache.maven.ci
    ци-падар
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ци-фарзанд
   ...

Агар шумо хоҳед, ки версияи 2.0.0-SNAPSHOT бунёд кунед, пас танҳо истифода баред

    mvn -Drevision = 2.0.0 бастаи тоза

Агар шумо хоҳед, ки озод кунед, пас танҳо SNAPSHOT-ро аз нав танзим кунед

    mvn -Dchangelist = бастаи тоза

* Намунаҳои дар боло овардашуда аз мақолаҳо дар вебсайти лоиҳаи Maven Apache

Ҳақиқати бебаҳо

Ҳама чиз хуб ва солим аст, вақти он расидааст, ки ҳисси қаноатмандӣ дошта бошед, аммо не. Маълум мешавад, ки ин усул барои насб ва ҷойгиркунӣ кор намекунад, зеро он дар тавсифи артефактҳои дар анбор нашршуда иваз карда намешавад. ${ревизия} дар бораи маънои он ва maven дигар намефаҳманд, ки ин ҳама дар бораи чӣ аст.


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

Нуре дар охири туннель

Мо бояд роҳи ҳалли мушкилотро ҷустуҷӯ кунем. Вазъиятро наҷот дода метавонист плагини flatten-maven. Ин плагин ҳамаи тағирёбандаҳоро дар pom ҳал мекунад, аммо ҳамзамон бисёр маълумоти дигареро, ки танҳо ҳангоми васлкунӣ лозим аст ва ҳангоми воридоти артефактҳои нашршуда ба лоиҳаҳои дигар лозим нест, хориҷ мекунад. Васлкунак инчунин ҳама вобастагии волидайн ва кӯдакро "рост" мекунад ва дар натиҷа шумо як поми ҳамвор мегиред, ки ҳама чизро дар бар мегирад. Нороҳатӣ дар он буд, ки он "иловагӣ"-ро аз ҳад зиёд хориҷ мекунад, ки ба мо тамоман мувофиқ набуд. Пас аз омӯзиши маълумот дар бораи таҳияи ин плагин, маълум шуд, ки мо дар коинот ягона нестем ва дар моҳи августи соли 2018 дар Github дар анбори плагинҳо бо хоҳиши имконпазир сохтани он дархост эҷод шуда буд. ки худамон муайян кунем, ки чи тавр pom.xml-ро «вайрон» кунем. Таҳиягарон ба овози онҳое, ки азият мекашанд, гӯш карданд ва аллакай дар моҳи декабри соли ҷорӣ бо нашри версияи нави 1.1.0, дар плагини flatten-maven-режими нав, ResolutionCiFriendliesOnly пайдо шуд, ки аз ҳарвақта мувофиқтар буд - онро тарк мекунад pom.xml тавре ки ҳаст, ба истиснои элемент ва имкон медиҳад ${ревизия}, ${sha1} и ${тағйирдиҳанда}.

Илова кардани плагин ба лоиҳа


  
    org.codehaus.mojo
    плагини flatten-maven
    1.1.0
    
      дуруст
      ResolCiFriendliesOnly
    
    
      
        ҳамвор кардан
        раванд-захираҳо
        
          ҳамвор кардан
        
      
      
        ҳамвор кардан.тоза
        тоза
        
          тоза
        
      
    
  

Муҳокима!

Охират муборак

Минбаъд, барои тағир додани версияи тамоми лоиҳа ва бигзоред, ки ҳама вобастагӣ аз он огоҳ шаванд, мо танҳо бояд элементро таҳрир кунем.нусхабардорӣ> танҳо дар реша pom.xml. На сад ё дутои ин файлҳо бо ҳамон тағирот ба барраси меоянд, балки як. Хуб, ба истифода лозим нест версияҳои-maven-плагин.

Манбаъ: will.com

Илова Эзоҳ