Panduan untuk Profil Maven

1. Ikhtisar

Profil Maven dapat digunakan untuk membuat konfigurasi build yang disesuaikan , seperti menargetkan tingkat perincian pengujian atau lingkungan penerapan tertentu.

Dalam tutorial ini, kita akan belajar bagaimana bekerja dengan profil Maven.

2. Contoh Dasar

Biasanya ketika kita menjalankan paket mvn, pengujian unit juga dijalankan . Tetapi bagaimana jika kita ingin mengemas artefak dengan cepat dan menjalankannya untuk melihat apakah itu berfungsi?

Pertama, kita akan membuat profil tanpa tes yang menyetel properti maven.test.skip ke true:

 no-tests  true  

Selanjutnya, kita akan menjalankan profil dengan menjalankan perintah mvn package -Pno-tests . Sekarang artefak dibuat dan pengujian dilewati. Dalam hal ini perintah mvn package -Dmaven.test.skip akan lebih mudah.

Namun, ini hanyalah pengenalan profil Maven. Mari kita lihat beberapa penyiapan yang lebih rumit.

3. Mendeklarasikan Profil

Di bagian sebelumnya, kami melihat cara membuat satu profil. Kita dapat mengkonfigurasi profil sebanyak yang kita inginkan dengan memberi mereka id unik.

Katakanlah kita ingin membuat profil yang hanya menjalankan tes integrasi dan satu lagi untuk serangkaian tes mutasi.

Kami akan mulai dengan menentukan id untuk masing-masing di file pom.xml kami :

  integration-tests   mutation-tests  

Dalam setiap elemen profil , kita dapat mengonfigurasi banyak elemen seperti dependensi , plugin , sumber daya , finalName .

Jadi, untuk contoh di atas, kita bisa menambahkan plugin dan dependensinya secara terpisah untuk uji integrasi dan uji mutasi .

Memisahkan pengujian ke dalam profil dapat membuat build default lebih cepat dengan membuatnya fokus, katakanlah, hanya pada pengujian unit.

3.1. Lingkup Profil

Sekarang, kami baru saja menempatkan profil ini di file pom.xml kami , yang mendeklarasikannya hanya untuk proyek kami.

Namun, di Maven 3, kami sebenarnya dapat menambahkan profil ke salah satu dari tiga lokasi:

  1. Profil khusus proyek masuk ke file pom.xml proyek
  2. Profil khusus pengguna masuk ke file settings.xml pengguna
  3. Profil global masuk ke file settings.xml global

Perhatikan bahwa Maven 2 memang mendukung lokasi keempat, tetapi ini telah dihapus di Maven 3.

Kami mencoba mengonfigurasi profil di pom.xml bila memungkinkan. Alasannya adalah kami ingin menggunakan profil tersebut baik di mesin pengembangan maupun di mesin build. Menggunakan settings.xml lebih sulit dan rawan kesalahan karena kami harus mendistribusikannya sendiri ke seluruh lingkungan build.

4. Mengaktifkan Profil

Setelah kita membuat satu atau lebih profil, kita dapat mulai menggunakannya, atau dengan kata lain, mengaktifkannya .

4.1. Melihat Profil Mana Yang Aktif

Mari gunakan bantuan: sasaran profil-aktif untuk melihat profil mana yang aktif di bawaan kita:

mvn help:active-profiles

Sebenarnya, karena kami belum mengaktifkan apa pun, kami mendapatkan:

The following profiles are active:

Tidak ada.

Kami akan mengaktifkannya sebentar lagi. Tetapi secara cepat, cara lain untuk melihat apa yang diaktifkan adalah dengan menyertakan maven-help-plugin di pom.xml kami dan mengikat tujuan profil-aktif ke fase kompilasi :

   org.apache.maven.plugins maven-help-plugin 3.2.0   show-profiles compile  active-profiles      

Sekarang, mari kita mulai menggunakannya! Kami akan melihat beberapa cara berbeda.

4.2. Menggunakan -P

Sebenarnya kita sudah melihat satu cara di awal, yaitu kita bisa mengaktifkan profil dengan argumen -P .

Jadi, mari kita mulai dengan mengaktifkan profil uji integrasi :

mvn package -P integration-tests

Jika kita memverifikasi profil aktif, dengan maven-help-plugin atau mvn help: active-profiles -P integration-tests kita akan mendapatkan hasil sebagai berikut:

The following profiles are active: - integration-tests

Jika kami ingin mengaktifkan beberapa profil secara bersamaan, kami menggunakan daftar profil yang dipisahkan koma:

mvn package -P integration-tests,mutation-tests

4.3. Aktif secara Default

Jika kita selalu ingin menjalankan profil, kita dapat membuatnya aktif secara default:

 integration-tests  true  

Kemudian, kami dapat menjalankan paket mvn tanpa menentukan profil, dan kami dapat memverifikasi bahwa profil uji integrasi aktif.

Namun, jika kita menjalankan perintah Maven dan mengaktifkan profil lain selain profil activeByDefault akan dilewati. Jadi ketika kita menjalankan paket mvn -P mutation-test maka hanya profil mutation-test yang aktif.

Saat kami mengaktifkan dengan cara lain, profil activeByDefault juga dilewati seperti yang akan kita lihat di bagian selanjutnya.

4.4. Berdasarkan Properti

Kami dapat mengaktifkan profil pada baris perintah. Namun, terkadang lebih nyaman jika diaktifkan secara otomatis. Misalnya, kita dapat mendasarkannya pada properti sistem -D :

 active-on-property-environment   environment   

Kami sekarang mengaktifkan profil dengan perintah mvn package -Denvironment .

Profil juga dapat diaktifkan jika properti tidak ada:

 !environment 

Atau kita dapat mengaktifkan profil jika properti tersebut memiliki nilai tertentu:

 environment test 

Kita sekarang dapat menjalankan profil dengan paket mvn -Denvironment = test.

Terakhir, kita dapat mengaktifkan profil jika properti memiliki nilai selain nilai yang ditentukan:

 environment !test 

4.5. Berdasarkan Versi JDK

Opsi lainnya adalah mengaktifkan profil berdasarkan JDK yang berjalan di mesin. Dalam hal ini, kami ingin mengaktifkan profil jika versi JDK dimulai dengan 11:

 active-on-jdk-11  11  

Kami juga dapat menggunakan rentang untuk versi JDK seperti yang dijelaskan dalam Sintaks Rentang Versi Maven.

4.6. Berdasarkan Sistem Operasi

Sebagai alternatif, kami dapat mengaktifkan profil berdasarkan beberapa informasi sistem operasi.

Dan jika kami tidak yakin akan hal itu, pertama-tama kami dapat menggunakan perintah mvn penegak: display-info yang memberikan output berikut di mesin saya:

Maven Version: 3.5.4 JDK Version: 11.0.2 normalized as: 11.0.2 OS Info: Arch: amd64 Family: windows Name: windows 10 Version: 10.0

Setelah itu, kita dapat mengonfigurasi profil yang hanya diaktifkan di Windows 10:

 active-on-windows-10   windows 10 Windows amd64 10.0   

4.7. Berdasarkan File

Pilihan lainnya adalah menjalankan profil jika file ada atau hilang .

Jadi, mari buat profil pengujian yang hanya dijalankan jika testreport.html belum ada:

  target/testreport.html  

5. Menonaktifkan Profil

Kami telah melihat banyak cara untuk mengaktifkan profil, tetapi terkadang kami perlu menonaktifkannya juga.

Untuk menonaktifkan profil kita dapat menggunakan '!' atau '-'.

Jadi, untuk menonaktifkan profil active-on-jdk-11 kita menjalankan perintah mvn compile -P -active-on-jdk-11 .

6. Kesimpulan

Di artikel ini, kami telah melihat cara bekerja dengan profil Maven, jadi kami dapat membuat konfigurasi build yang berbeda.

Profil membantu mengeksekusi elemen spesifik dari build saat kita membutuhkannya. Ini mengoptimalkan proses pembangunan kami dan membantu memberikan umpan balik yang lebih cepat kepada pengembang.

Jangan ragu untuk melihat file pom.xml yang sudah jadi di GitHub.