Maven Terapkan ke Nexus

1. Gambaran keseluruhan

Dalam artikel sebelumnya, saya membincangkan bagaimana projek Maven dapat memasang balang pihak ketiga secara tempatan yang belum digunakan di Maven Central (atau di mana-mana repositori besar dan dihoskan secara terbuka).

Penyelesaian itu hanya boleh digunakan dalam projek kecil di mana pemasangan, menjalankan dan mengekalkan pelayan Nexus penuh mungkin berlebihan. Namun, ketika projek berkembang,

Nexus dengan cepat menjadi satu-satunya pilihan yang nyata dan matang untuk mengadakan artifak pihak ketiga, dan juga untuk menggunakan semula artifak dalaman di seluruh aliran pembangunan.

Artikel ini akan menunjukkan cara menyebarkan artifak projek ke Nexus, dengan Maven .

2. Keperluan Nexus di pom.xml

Agar Maven dapat menyebarkan artifak yang dihasilkannya dalam fasa paket bangunan, ia perlu menentukan maklumat repositori di mana artifak yang dikemas akan digunakan, melalui elemen distribusiManagement :

 nexus-snapshots //localhost:8081/nexus/content/repositories/snapshots 

Repositori Snapshots awam yang dihoskan keluar dari kotak di Nexus, jadi tidak perlu membuat atau mengkonfigurasi apa-apa lagi. Nexus memudahkan untuk menentukan URL dari repositori yang dihoskan - setiap repositori memaparkan entri yang tepat untuk ditambahkan diprojek pom, di bawah tab Ringkasan .

3. Pemalam

Secara lalai, Maven menangani mekanisme penyebaran melalui maven-deploy-plugin - ini dipetakan ke fasa penyebaran kitaran hidup Maven lalai:

 maven-deploy-plugin 2.8.1 default-deploy deploy deploy 

The Maven-mengerahkan-plugin adalah pilihan yang berdaya maju untuk mengendalikan tugas menggerakkan untuk artifak daripada projek untuk Nexus, tetapi ia tidak dibina untuk mengambil kesempatan sepenuhnya daripada apa Nexus ini boleh tawarkan. Oleh kerana itu, Sonatype membina pemalam khusus Nexus - plugin nexus-staging-maven - yang sebenarnya dirancang untuk memanfaatkan sepenuhnya fungsi yang lebih maju yang ditawarkan oleh Nexus - fungsi seperti pementasan.

Walaupun untuk proses penyebaran yang sederhana, kami tidak memerlukan fungsi pementasan, kami akan terus maju dengan plugin Nexus khusus ini kerana ia dibina dengan tujuan yang jelas untuk berbicara dengan Nexus dengan baik.

Satu-satunya alasan untuk menggunakan maven-deploy-plugin adalah untuk terus membuka pilihan untuk menggunakan alternatif untuk Nexus pada masa akan datang - misalnya, sebuah repositori Artifactory. Walau bagaimanapun, tidak seperti komponen lain yang sebenarnya boleh berubah sepanjang kitaran hayat projek, Pengurus Repositori Maven sangat tidak mungkin berubah, sehingga fleksibiliti tidak diperlukan.

Jadi, langkah pertama dalam menggunakan plugin penyebaran lain dalam fasa penyebaran adalah dengan mematikan pemetaan lalai yang ada:

 org.apache.maven.plugins maven-deploy-plugin ${maven-deploy-plugin.version} true 

Sekarang, kita dapat menentukan:

 org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 default-deploy deploy deploy nexus //localhost:8081/nexus/ true 

The mengerahkan matlamat plugin yang dipetakan kepada mengerahkan fasa membina Maven itu.

Juga perhatikan bahawa, seperti yang dibincangkan, kita tidak memerlukan fungsi pementasan dalam penyebaran artifak -SNAPSHOT sederhana ke Nexus, sehingga dilumpuhkan sepenuhnya melalui unsur.

Secara lalai, tujuan penyebaran merangkumi aliran kerja pementasan, yang disarankan untuk pembuatan rilis.

4. Tetapan global.xml

Penerapan ke Nexus adalah operasi yang aman - dan pengguna penyebaran ada untuk tujuan ini di luar kotak pada mana-mana contoh Nexus.

Mengkonfigurasi Maven dengan kelayakan pengguna penyebaran ini , sehingga dapat berinteraksi dengan Nexus dengan betul, tidak dapat dilakukan dalam pom.xml projek. Ini kerana sintaks pom tidak membenarkannya, apatah lagi fakta bahawa pom mungkin artifak umum, jadi tidak begitu sesuai untuk menyimpan maklumat kelayakan.

Kelayakan pelayan harus ditentukan dalam tetapan Maven global.xml :

 nexus-snapshots deployment the_pass_for_the_deployment_user 

Pelayan juga boleh dikonfigurasi untuk menggunakan keselamatan berasaskan kunci dan bukannya kelayakan mentah dan teks biasa

5. Proses Penyebaran

Melakukan proses penyebaran adalah tugas yang mudah:

mvn clean deploy -Dmaven.test.skip=true

Melangkau ujian tidak apa-apa dalam konteks pekerjaan penyebaran kerana pekerjaan ini harus menjadi pekerjaan terakhir dari saluran penyebaran untuk projek.

Contoh umum saluran penyebaran seperti itu adalah berturut-turut pekerjaan Jenkins, masing-masing akan memicu yang berikutnya hanya jika berjaya diselesaikan. Oleh itu, adalah tanggungjawab pekerjaan sebelumnya dalam perancangan untuk menjalankan semua rangkaian ujian dari projek - pada masa pekerjaan penyebaran dijalankan, semua ujian sudah seharusnya lulus.

Sekiranya menjalankan satu arahan, maka ujian dapat tetap aktif untuk dijalankan sebelum fasa penyebaran dijalankan:

mvn clean deploy

6. Kesimpulannya

Ini adalah penyelesaian yang mudah tetapi sangat berkesan untuk menyebarkan artifak Maven ke Nexus.

Ia juga agak keras kepala - nexus-pementasan-Maven-plugin digunakan dan bukannya lalai Maven-mengerahkan-plugin ; fungsi pementasan dilumpuhkan, dan lain-lain - pilihan inilah yang menjadikan penyelesaiannya mudah dan praktikal.

Berpotensi mengaktifkan fungsi pementasan penuh boleh menjadi tajuk artikel masa depan.

Akhirnya, kita akan membincangkan Proses Pelepasan dalam artikel seterusnya.