Menggunakan Plugin Rilis Maven

Ini adalah praktik terbaik yang sangat baik dan banyak digunakan untuk menandai setiap rilis stabil di sistem kontrol versi Anda untuk referensi di masa mendatang. Namun, pembukuan semacam ini membosankan dan rawan kesalahan di saat-saat terbaik. Seperti banyak tugas membosankan dan rawan kesalahan, ini adalah salah satu hal yang dapat dilakukan dengan sedikit otomatisasi. Untungnya, Maven bisa membantu. Itu

Plugin Rilis Maven

membantu Anda mengotomatiskan seluruh proses peningkatan nomor versi POM dan menandai versi rilis di sistem kontrol versi Anda. Mari kita lihat cara kerjanya. Berikut adalah ekstrak dari file POM, menunjukkan nomor versi yang secara unik mengidentifikasi versi ini:

  ... com.wakaleo.myapp myapp-core jar 1.0.1-SNAPSHOT ... 

Sufiks SNAPSHOT berarti bahwa setiap kali saya menerapkan versi ini, snapshot baru akan disebarkan ke repositori Maven saya. Siapa pun yang ingin menggunakan versi SNAPSHOT terbaru dan terkini dapat menambahkan ketergantungan SNAPSHOT dalam proyek mereka. Ini biasanya saya sendiri, atau anggota lain dari tim pengembangan. Jepretan, menurut definisi, cenderung menjadi binatang yang cukup tidak stabil.

  com.wakaleo.myapp myapp-core 1.0.1-SNAPSHOT  

Sebagai catatan tambahan, yang berani dan ceroboh dapat mengambil langkah lebih jauh dengan selalu menggunakan versi TERBARU, terlepas dari nomor versi sebenarnya, dan terlepas dari apakah itu rilis resmi atau hanya snapshot:

  com.wakaleo.myapp myapp-core LATEST  

Ketika versi 1.0.1 siap, kita perlu memperbarui file POM, memasukkan file POM baru ke kontrol versi, menandai versi ini sebagai rilis, dan kemudian melanjutkan untuk mengerjakan versi 1.0.2. Plugin Maven Release dapat mengotomatiskan sebagian besar proses ini. Namun, sebelum plugin Maven Release dapat melakukan keajaibannya, Anda perlu memastikan bahwa Anda telah menyiapkan semua yang dibutuhkannya di file POM Anda.

Pertama-tama, Anda harus bekerja dengan rilis SNAPSHOT. Namun, saat Anda siap untuk merilis versi baru, Anda harus menghapus semua referensi ke snapshot di dependensi Anda. Ini karena rilis harus stabil, dan build yang menggunakan snapshot, menurut definisi, tidak selalu dapat direproduksi.

Hal berikutnya yang Anda butuhkan adalah

blokir, sehingga dapat menemukan tempat untuk membuat tag rilis baru dan melakukan perubahan. Berikut adalah contoh dunia nyata:
  scm:svn://wakaleo.devguard.com/svn/maven-plugins/maven-schemaspy-plugin/tr... scm:svn://wakaleo.devguard.com/svn/maven-plugins/maven-schemaspy-plugin/tr... //wakaleo.devguard.com/svn/maven-plugins/maven-schemaspy-plugin/tr...  

Selanjutnya, Anda perlu mengkonfigurasi plugin Rilis itu sendiri. Ini terutama melibatkan memberi tahu Maven ke mana tag rilis Anda pergi, melalui elemen konfigurasi "tagBase". Jika Anda menggunakan konvensi trunk / tags / Branch Subversion, Maven secara otomatis akan meletakkan tag rilis di direktori "tags". Pada contoh berikut, kami menggunakan sedikit variasi pada konvensi normal, dan menempatkan rilis di direktori "tags / release":

  ...  ...   org.apache.maven.plugins maven-release-plugin  //wakaleo.devguard.com/svn/maven-plugins/maven-schemaspy-plugin/ta...    ...  ...  

Sekarang Anda dapat turun ke bisnis, dan mencoba rilis (semi-) otomatis. Hal pertama yang perlu Anda lakukan adalah memastikan semua perubahan terbaru Anda telah dilakukan untuk (dalam kasus kami) Subversion. Jika ada perubahan luar biasa, Maven tidak akan membiarkan Anda melakukan rilis. Pertama-tama, Anda perlu mempersiapkan rilis, menggunakan tujuan "mempersiapkan":

 $ mvn release:prepare 

Sasaran ini akan menanyakan serangkaian pertanyaan untuk mengonfirmasi nomor versi yang ingin Anda rilis, nomor versi snapshot baru apa yang ingin Anda gunakan, dan di mana Anda ingin meletakkan tag rilis. Jika Anda telah mengatur file POM Anda dengan benar, ini akan memiliki default yang masuk akal, dan Anda tidak perlu banyak berpikir. Nyatanya, Anda bahkan dapat menonaktifkan pertanyaan-pertanyaan ini secara penuh menggunakan opsi baris perintah "--batch-mode".

Jika Anda ingin mengetahui secara pasti apa yang akan dilakukan Maven pada file POM dan SCM Anda sebelumnya (biasanya ide yang bagus), Anda dapat menjalankan operasi dalam mode "dry-run", seperti yang ditunjukkan di sini:

 $ mvn release:prepare -DdryRun=true 

Trik berguna ini mensimulasikan operasi SCM (dengan menuliskannya ke konsol), dan membuat dua file sampel pom yang dapat Anda lihat: pom.xml.tag, yang merupakan file pom yang akan dikomit ke Subversion dan diberi tag, dan pom .xml.next, yang berisi nomor versi snapshot berikutnya. Setelah Anda puas dengan apa yang akan dilakukan Maven, Anda dapat melakukan hal yang nyata:

 $ mvn release:clean release:prepare 

Sasaran "mempersiapkan" sebenarnya cukup banyak. Memang, itu akan:

  • Pastikan tidak ada perubahan yang tidak terikat atau ketergantungan SNAPSHOT (lihat di atas)
  • Perbarui nomor versi SNAPSHOT ke versi rilis (misalnya, beralih dari "1.0.1-SNAPSHOT" ke "1.0.1")
  • Perbarui bagian SCM dari file POM agar mengarah ke tag rilis daripada trunk di repositori Subversion
  • Jalankan semua pengujian aplikasi untuk memastikan semuanya masih berfungsi
  • Lakukan perubahan yang dilakukan pada file POM
  • Buat tag baru di Subversion untuk rilis ini
  • Perbarui nomor versi SNAPSHOT ke versi SNAPSHOT baru (mis. Beralih dari "1.0.1" ke "1.0.2-SNAPSHOT")
  • Lakukan perubahan yang dilakukan pada file POM

Setelah Anda selesai, versi rilis Anda diberi tag di Subversion dan Anda sedang mengerjakan versi SNAPSHOT yang baru.

Tapi tunggu, sebentar, Anda mungkin berkata. Bukankah kita lupa menyebarkan rilis kita di suatu tempat? Nah, itulah mengapa gol disebut "mempersiapkan". Kami hanya menyiapkan semuanya untuk persiapan rilis, kami belum benar-benar merilis apa pun. Tapi jangan khawatir, melakukan perilisan juga cukup mudah. Cukup gunakan "mvn release: perform":

 $ mvn release:perform 

This will effectively do a "mvn deploy" with the release we have just created. More precisely, it will use the release.properties file generated by the "release:prepare" goal to do the following:

  • Check out the release we just tagged
  • Build the application (compiling, testing and packaging)
  • Deploy the release version to local and remote repositories

Of course, both of these steps are very easy to place on a Hudson server, so that they can be done centrally. >All in all, a very convenient way to automate your release process.

"Best development course I have been on in a very long time...Greatly enjoyed the course...A 'must' course for serious Java developers..." - Read what people are saying about the Java Power Tools Bootcamps.

Artikel ini, "Menggunakan Plugin Rilis Maven" pada awalnya diterbitkan oleh JavaWorld.