maven төслүүдэд хувилбаруудыг хялбарчлахын тулд flatten-maven-plugin-ийг ашиглах туршлагатай

Бидний тухай

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

нэвтрэх

Бид ихэвчлэн maven-ийг Java програмуудад зориулж бүтээх систем болгон ашигладаг бөгөөд энэхүү богино өгүүллээр бид хөгжүүлэлтийг зохион байгуулах явцад тулгарч байсан бэрхшээлүүдийн нэг, үүнийг даван туулах боломжийг олгосон аргын талаар ярихыг хүсч байна. асуудал.

Урьдчилсан нөхцөл ба ажлын урсгал

Манай maven төслүүдийн хөгжлийн онцлогоос шалтгаалан бид маш олон модуль, хамаарал, хүүхдийн төслүүдийг ашигладаг. Нэг мод дахь pom файлын тоо хэдэн арван, бүр хэдэн зуун байж болно.

maven төслүүдэд хувилбаруудыг хялбарчлахын тулд flatten-maven-plugin-ийг ашиглах туршлагатай

Энэ нь тийм ч чухал зүйл биш юм шиг санагдаж байна, тэд үүнийг нэг удаа бүтээж, мартсан. Хэрэв та бүх файлд нэг дор ямар нэг зүйлийг өөрчлөх эсвэл нэмэх шаардлагатай бол засварлагч болон IDE-д олон тохиромжтой хэрэгсэл байдаг. pom.xml-д хамгийн түгээмэл тогтмол өөрчлөлт юу вэ? Төслийн хувилбарууд болон хамааралууд өөрчлөгдсөн гэдэгт бид итгэдэг. Магадгүй хэн нэгэн үүнтэй маргахыг хүсэх байх, гэхдээ энэ нь бидний хувьд яг ийм байна. Үүний шалтгаан нь цөмтэй зэрэгцэн бид өөрсдийн олон номын сангуудыг нэгэн зэрэг хөгжүүлж байгаа бөгөөд бүтээх, туршилтын үр дүнг байнга давтахын тулд хормын хувилбарыг ашиглах нь бидэнд тийм ч тохиромжтой арга биш юм шиг санагдаж байна. Энэ шалтгааны улмаас төсөл бүрийн хувилбарын дугаарыг нэмэгдүүлэх шаардлагатай.

Түүнчлэн, хөгжүүлэгч үе үе номын сангийн өөрийн салбарыг байгуулж, түүний үйл ажиллагааг бүх хамааралтай харьцуулж шалгах шаардлагатай байдаг бөгөөд үүний тулд тэр бүхний хувилбарыг гараар өөрчлөх шаардлагатай болдог.

Анхны шийдэл

Ийм давтамжтай, олон хувилбарын өөрчлөлтүүдээр би CI доторх үйл явцыг хялбаршуулж, автоматжуулахыг хүсч байна. Энэ бол тохиромжтой, алдартай залгаас аврах ажилд ирдэг. хувилбарууд-maven-plugin - үүнийг холбож, ажиллуулна уу

mvn -N хувилбарууд: багц -DnewVersion=2.0.1

болон Maven бүх зүйлийг хийх ёстой зүйлээ хийх болно: энэ нь шаталсан шатлалыг дээрээс доошоо чиглүүлж, бүх хувилбаруудыг солих болно - гоо сайхан! Одоо зөвхөн татах хүсэлтийг гаргах л үлдлээ, хамт ажиллагсад өөрчлөлтийг хянан үзэж, та хурдан их биетэй нэгдэж болно. Түргэн? Яаж ч байсан хамаагүй. Хэдэн зуу pom.xml хянаж үзэх бөгөөд энэ нь кодыг тооцохгүй. Нэмж дурдахад, ийм олон тооны өөрчлөгдсөн файлуудтай нэгдэх зөрчилдөөнөөс хэн ч аюулгүй байдаггүй. CI процесст хувилбарын өөрчлөлт нь функциональ өөрчлөлтийн хамт автоматаар явагддаг бөгөөд тусад нь биш гэдгийг энд тэмдэглэх нь зүйтэй.

Шинэ боломжууд

Хэсэг хугацаанд бид тайвширч, огцрохын тулд тэр үеийн залуусыг хүртэл ингэж амьдарсан Maven Apache төсөл 3.5.0-бета-1 хувилбараас эхлэн Maven нь "орлуулагч" гэж нэрлэгддэг дэмжлэгийг оруулаагүй болно. Эдгээр орлуулагчдын мөн чанар нь үүнд оршино pom.xml төслийн хувилбарын тодорхой заалтын оронд хувьсагчдыг ашигладаг ${хувилбар}, ${sha1} и ${өөрчлөгч}. Эдгээр шинж чанаруудын утгыг өөрөө элементэд тохируулсан болношинж чанар>, эсвэл тэдгээрийг системийн шинж чанараар тодорхойлж болно

mvn -Drevision = 2.0.0 цэвэр багц

Системийн өмчийн утгууд нь тодорхойлсон утгуудаас давамгайлдагшинж чанар>.

Эцэг эх

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-эцэг эх
  Анхны CI-д ээлтэй
  ${хувилбар}${sha1}${өөрчлөгч}
  ...
  
    1.3.1
    -НУРШИЛТ
    
  


Үр удам

  4.0.0
  
    org.apache.maven.ci
    ci-эцэг эх
    ${хувилбар}${sha1}${өөрчлөгч}
  
  org.apache.maven.ci
  ци-хүүхэд
   ...

Хэрэв та 2.0.0-SNAPSHOT хувилбарыг бүтээхийг хүсвэл зүгээр л хэрэглээрэй

    mvn -Drevision = 2.0.0 цэвэр багц

Хэрэв та хувилбар гаргахыг хүсвэл SNAPSHOT-г дахин тохируулаарай

    mvn -Dchangelist = цэвэр багц

*Дээрх жишээнүүдийг авсан болно нийтлэл Maven Apache төслийн вэбсайт дээр

Хатуу бодит байдал

Бүх зүйл сайхан, эрүүл, сэтгэл ханамжийг мэдрэх цаг болсон, гэхдээ үгүй. Энэ арга нь хадгалах газарт нийтлэгдсэн олдворуудын тайлбарт орлуулахгүй тул суулгах, байрлуулахад ажиллахгүй. ${хувилбар} Үүний утга учрыг харгалзан Мавен энэ нь юу болохыг ойлгохоо болино.


    org.apache
    apache
    ${хувилбар}

Хонгилын үзүүр дэх гэрэл

Бид асуудлыг шийдэх гарц хайх хэрэгтэй. Нөхцөл байдлыг аварч чадах байсан flatten-maven-plugin. Энэ залгаас нь pom дахь бүх хувьсагчдыг шийддэг боловч зөвхөн угсрах явцад шаардлагатай бусад олон мэдээллийг хасдаг бөгөөд хэвлэгдсэн олдворуудыг бусад төслүүдэд импортлоход шаардлагагүй болно. Энэхүү залгаас нь эцэг эх, хүүхдийн бүх хамаарлыг "шулуулдаг" бөгөөд үүний үр дүнд та хэрэгтэй бүх зүйлээ багтаасан хавтгай пом авах болно. Энэ нь хэт их "нэмэлт" -ийг хассан нь эвгүй тал байсан бөгөөд энэ нь бидэнд огт тохирохгүй байв. Энэхүү залгаасын хөгжүүлэлтийн талаарх мэдээллийг судалсны дараа бид орчлон ертөнцөд цорын ганц хүмүүс биш болох нь тогтоогдсон бөгөөд 2018 оны 1.1.0-р сард Github дээр залгаасын репозитор дээр үүнийг боломжтой болгох хүсэлтэй татах хүсэлтийг үүсгэсэн. pom.xml-ийг хэрхэн "гэмтэх" талаар өөрсдөө тодорхойлох. Хөгжүүлэгчид зовж шаналж буй хүмүүсийн дуу хоолойг сонссон бөгөөд XNUMX-р сард аль хэдийн XNUMX шинэ хувилбар гарснаар flatten-maven-plugin-д урьд өмнө байгаагүй илүү тохиромжтой, шинэ шийдэл болох CiFriendliesOnly горим гарч ирэв. Элементээс бусад тохиолдолд pom.xml мөн зөвшөөрдөг ${хувилбар}, ${sha1} и ${өөрчлөгч}.

Төсөлд залгаас нэмж байна


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      үнэн
      ResolutionCiFriendliesOnly
    
    
      
        тэгшлэх
        процесс-нөөцүүд
        
          тэгшлэх
        
      
      
        тэгшлэх.цэвэрлэх
        цэвэрхэн
        
          цэвэрхэн
        
      
    
  

Дууссан!

Аз жаргалтай төгсгөл

Одооноос эхлэн төслийн бүх хувилбарыг өөрчилж, бүх хамааралтай хүмүүст энэ тухай мэдэгдэхийн тулд бид зөвхөн элементийг засах хэрэгтэй.шалгалт> зөвхөн язгуурт pom.xml. Ижил өөрчлөлттэй эдгээр файлуудаас зуу эсвэл хоёр биш, харин нэг нь хянан үзэхэд ирдэг. За, хэрэглэх шаардлагагүй хувилбарууд-maven-plugin.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх