Tentang kami
Di 1C kami tidak hanya mengembangkan platform
Masuk
Kami paling sering menggunakan maven sebagai sistem pembangunan untuk aplikasi Java, dan dalam artikel singkat ini kami ingin berbicara tentang salah satu masalah yang harus kami hadapi dalam proses pengorganisasian pengembangan, dan tentang pendekatan yang memungkinkan kami untuk mengatasinya. masalah.
Prasyarat dan alur kerja
Karena kekhususan pengembangan dalam proyek pakar kami, kami menggunakan cukup banyak modul, dependensi, dan proyek turunan. Jumlah file pom dalam satu pohon bisa mencapai puluhan bahkan ratusan.
Tampaknya: bukan masalah besar, mereka membuatnya sekali dan melupakannya. Jika Anda perlu mengubah atau menambahkan sesuatu di semua file sekaligus, ada banyak alat yang mudah digunakan di editor dan IDE. Apa perubahan reguler yang paling umum pada pom.xml? Kami percaya bahwa perubahan dalam versi dan ketergantungan proyek. Mungkin seseorang ingin berdebat dengan hal ini, tetapi inilah yang terjadi pada kita. Alasannya terletak pada kenyataan bahwa, bersama dengan kernel, kami secara bersamaan mengembangkan banyak perpustakaan kami sendiri, dan agar hasil build dan pengujian dapat direproduksi secara konstan, penggunaan snapshot tampaknya bukan pendekatan yang nyaman bagi kami. Untuk alasan ini, nomor versi dalam proyek perlu ditingkatkan pada setiap build.
Selain itu, dari waktu ke waktu, pengembang perlu membangun cabang perpustakaannya sendiri dan memeriksa fungsinya terhadap semua dependensi, sehingga ia harus mengubah versi semuanya secara manual.
Solusi awal
Dengan perubahan versi yang sering dan berulang, saya ingin menyederhanakan dan mengotomatiskan proses dalam CI. Di sinilah plugin yang nyaman dan terkenal bisa membantu. versi-maven-plugin - sambungkan dan luncurkan
mvn -N versi:set -DnewVersion=2.0.1
dan Maven akan melakukan segalanya sebagaimana mestinya: ia akan berjalan melalui hierarki dari atas ke bawah, menggantikan semua versi - cantik! Sekarang yang tersisa hanyalah mengajukan permintaan tarik, kolega akan meninjau perubahannya, dan Anda dapat dengan cepat bergabung dengan trunk. Dengan cepat? Tidak peduli bagaimana keadaannya. Beberapa ratus pom.xml untuk ditinjau, dan ini belum termasuk kodenya. Selain itu, tidak ada yang kebal dari konflik penggabungan dengan begitu banyak file yang diubah. Perlu dicatat di sini bahwa dalam proses CI, perubahan versi terjadi secara otomatis seiring dengan perubahan fungsionalitas, dan tidak secara terpisah.
Fitur baru
Untuk sementara kami menenangkan diri dan, setelah berdamai, kami hidup seperti itu sampai orang-orang keluar
mvn -Drevision=2.0.0 paket bersih
Nilai properti sistem lebih diutamakan daripada nilai yang ditentukan dalamproperties>.
Orang tua
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-orang tua
Ramah CI Pertama
${revisi}${sha1}${daftar perubahan}
...
1.3.1
-FOTO
Keturunan
4.0.0
org.apache.maven.ci
ci-orang tua
${revisi}${sha1}${daftar perubahan}
org.apache.maven.ci
ci-anak
...
Jika ingin membangun versi 2.0.0-SNAPSHOT, gunakan saja
mvn -Drevision=2.0.0 paket bersih
Jika ingin membuat rilis, maka reset saja SNAPSHOT
mvn -Dchangelist= paket bersih
*Contoh di atas diambil dari
Kenyataan yang pahit
Semuanya baik-baik saja dan sehat, saatnya merasakan rasa puas, tapi tidak. Ternyata metode ini tidak akan berfungsi untuk instalasi dan penerapan, karena tidak akan diganti dalam deskripsi artefak yang dipublikasikan di repositori ${revisi} tentang maknanya dan pakar tidak akan lagi memahami maksudnya.
org.apache
apache
${revisi}
Cahaya di ujung terowongan
Kita perlu mencari solusi untuk masalah ini. Bisa menyelamatkan situasi
Menambahkan plugin ke proyek
org.codehaus.mojo
plugin-maven-ratakan
1.1.0
BENAR
menyelesaikanCiFriendliesOnly
meratakan
sumber daya proses
meratakan
ratakan.bersihkan
membersihkan
membersihkan
Selesai!
Akhir yang bahagia
Mulai sekarang, untuk mengubah versi keseluruhan proyek dan memberi tahu semua dependensi, kita hanya perlu mengedit elemennyarevisi> hanya di root saja pom.xml. Bukan seratus atau dua file dengan perubahan yang sama yang sampai pada tinjauan, tetapi satu. Yah, tidak perlu digunakan versi-maven-plugin.
Sumber: www.habr.com