Maven projelerinde versiyonlamayı basitleştirmek için düzten-maven-eklentisini kullanma deneyimi

Hakkımızda

1C'de yalnızca bir platform geliştirmiyoruz 1C: Kurumsal üzerinde C ++ и JavaScript, aynı zamanda Java uygulamaları - özellikle yeni geliştirme ortamı Kurumsal Geliştirme Araçları Eclipse'e ve platformla derinlemesine entegre edilmiş bir mesajlaşma sunucusuna dayalı - Etkileşim Sistemleri.

Giriş

Maven'i çoğunlukla Java uygulamaları için bir derleme sistemi olarak kullanıyoruz ve bu kısa makalede, geliştirmeyi organize etme sürecinde karşılaştığımız sorunlardan birinden ve bu sorunun üstesinden gelmemize olanak sağlayan yaklaşımdan bahsetmek istiyoruz. sorun.

Önkoşullar ve iş akışı

Maven projelerimizde geliştirmenin özellikleri nedeniyle oldukça fazla modül, bağımlılık ve alt proje kullanıyoruz. Bir ağaçtaki pom dosyalarının sayısı onlarca, hatta yüzlerce olabilir.

Maven projelerinde versiyonlamayı basitleştirmek için düzten-maven-eklentisini kullanma deneyimi

Görünüşe göre: önemli değil, onu bir kez yarattılar ve unuttular. Tüm dosyalarda bir şeyi aynı anda değiştirmeniz veya eklemeniz gerekiyorsa, düzenleyicilerde ve IDE'lerde pek çok kullanışlı araç vardır. Pom.xml'de en yaygın düzenli değişiklik nedir? Proje versiyonlarında ve bağımlılıklarında değişiklik olduğuna inanıyoruz. Belki birisi bununla tartışmak ister ama bizde durum tam olarak budur. Bunun nedeni, çekirdekle birlikte birçok kütüphanemizi aynı anda geliştirmemiz ve derleme ve test sonuçlarının sürekli tekrarlanabilirliği açısından anlık görüntülerin kullanılmasının bize uygun bir yaklaşım gibi görünmemesidir. Bu nedenle projelerde versiyon sayısının her build ile yükseltilmesi gerekmektedir.

Ayrıca, zaman zaman bir geliştiricinin kendi kitaplık şubesini oluşturması ve bunun işlevselliğini tüm bağımlılıklara göre kontrol etmesi gerekir; bunun için de hepsinin sürümünü manuel olarak değiştirmesi gerekir.

İlk çözüm

Bu kadar sık ​​ve çoklu sürüm değişiklikleriyle CI içindeki süreci basitleştirmek ve otomatikleştirmek istiyorum. Uygun, iyi bilinen bir eklentinin kurtarmaya geldiği yer burasıdır. version-maven-eklentisi - bağlayın ve başlatın

mvn -N sürümleri:set -DnewVersion=2.0.1

ve Maven her şeyi olması gerektiği gibi yapacak: hiyerarşide yukarıdan aşağıya doğru ilerleyecek, tüm versiyonların yerini alacak - güzellik! Artık geriye kalan tek şey bir çekme isteği oluşturmaktır; iş arkadaşlarınız değişiklikleri inceleyecek ve siz de hızlı bir şekilde bagaja katılabilirsiniz. Hızlıca? Nasıl olursa olsun. Birkaç yüz pom.xml inceleme için ve bu kodu saymıyor. Ayrıca, hiç kimse bu kadar çok sayıda değiştirilmiş dosyayla birleştirme çakışmalarına karşı güvende değildir. Burada şunu belirtmek gerekir ki, CI sürecinde sürüm değişiklikleri, işlevsellik değişiklikleriyle birlikte otomatik olarak gerçekleşir ve bir şekilde ayrı ayrı gerçekleşmez.

Yeni Özellikler

Bir süre sakinleştik ve kendimizi teslim ederek, çocuklar gelene kadar böyle yaşadık. Maven Apache Projesi 3.5.0-beta-1 sürümünden itibaren Maven, "yer tutucular" olarak adlandırılan desteği içermiyordu. Bu ikamelerin özü şudur: pom.xml proje sürümünün belirli bir göstergesi yerine değişkenler kullanılır ${revizyon}, ${sha1} и ${değişim listesi}. Bu özelliklerin değerleri öğenin içinde ayarlanır.özellikleri> veya bir sistem özelliği aracılığıyla tanımlanabilirler

mvn -Drevision=2.0.0 temiz paket

Sistem özelliği değerleri, içinde tanımlanan değerlerden önceliklidir.özellikleri>.

Ebeveyn

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ebeveyn
  İlk CI Dostu
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -ENSTANTANE FOTOĞRAF
    
  


torun

  4.0.0
  
    org.apache.maven.ci
    ebeveyn
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-çocuk
   ...

2.0.0-SNAPSHOT sürümünü oluşturmak istiyorsanız, yalnızca şunu kullanın:

    mvn -Drevision=2.0.0 temiz paket

Bir sürüm oluşturmak istiyorsanız SNAPSHOT'u sıfırlayın

    mvn -Dchangelist= temiz paket

*Yukarıdaki örnekler şuradan alınmıştır: makaleler Maven Apache Projesi web sitesinde

Sert gerçeklik

Her şey yolunda ve sağlıklı, tatmin duygusunu hissetmenin zamanı geldi ama hayır. Depoda yayınlanan yapıtların açıklamalarında değiştirilmeyeceği için bu yöntemin kurulum ve dağıtım için işe yaramayacağı ortaya çıktı. ${revizyon} anlamını öğrenecek ve maven artık bunun neyle ilgili olduğunu anlamayacak.


    org.apache
    apache
    ${revizyon}

Bir tünelin sonunda bir ışık

Soruna çözüm aramamız gerekiyor. Durumu kurtarabilirdi düzleştirme-maven-eklentisi. Bu eklenti pom'daki tüm değişkenleri çözer, ancak aynı zamanda yalnızca montaj sırasında gerekli olan ve yayınlanan yapıtları diğer projelere aktarırken gerekmeyen diğer birçok bilgiyi de ortadan kaldırır. Eklenti ayrıca tüm ebeveyn-çocuk bağımlılıklarını "düzeltir" ve sonuç olarak ihtiyacınız olan her şeyi içeren düz bir pom elde edersiniz. Rahatsızlık, bize hiç uymayan çok fazla "fazladan" kesinti yapmasıydı. Bu eklentinin geliştirilmesine ilişkin bilgileri inceledikten sonra, evrendeki tek kişinin biz olmadığımız ortaya çıktı ve Ağustos 2018'de, eklenti deposundaki Github'da bunu mümkün kılmak arzusuyla bir çekme isteği oluşturuldu. pom.xml'yi nasıl "bozacağımızı" kendi başımıza belirlemek için. Geliştiriciler acı çekenlerin sesini dinlediler ve zaten Aralık ayında, yeni sürüm 1.1.0'ın piyasaya sürülmesiyle, her zamankinden daha uygun olan, düzten-maven-eklentisinde yeni bir mod olansololCiFriendliesOnly ortaya çıktı - ayrılıyor pom.xml öğesi hariç olduğu gibi ve izin verir ${revizyon}, ${sha1} и ${değişim listesi}.

Projeye eklenti ekleme


  
    org.codehaus.mojo
    düzleştirme-maven-eklentisi
    1.1.0
    
      doğru
      çözümYalnızcaCiFriendlies
    
    
      
        düzleştirmek
        süreç kaynakları
        
          düzleştirmek
        
      
      
        düzleştir.temiz
        temiz
        
          temiz
        
      
    
  

Bitti!

Mutlu son

Şu andan itibaren, tüm projenin versiyonunu değiştirmek ve tüm bağımlılıkların bundan haberdar olmasını sağlamak için sadece öğeyi düzenlememiz gerekiyor.revizyon> sadece kökte pom.xml. İncelemeye bu dosyalardan aynı değişikliğe sahip yüz veya iki tane değil, bir tanesi ulaşıyor. Neyse kullanmaya gerek yok version-maven-eklentisi.

Kaynak: habr.com

Yorum ekle