Hakkımızda
1C'de yalnızca bir platform geliştirmiyoruz üzerinde и , aynı zamanda Java uygulamaları - özellikle yeni geliştirme ortamı Eclipse'e ve platformla derinlemesine entegre edilmiş bir mesajlaşma sunucusuna dayalı - .
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.

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. 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: 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 . 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
