1. Gambaran keseluruhan
Profil Maven dapat digunakan untuk membuat konfigurasi binaan yang disesuaikan , seperti menargetkan tahap butiran ujian atau lingkungan penyebaran tertentu.
Dalam tutorial ini, kita akan belajar bagaimana bekerja dengan profil Maven.
2. Contoh Asas
Biasanya ketika kita menjalankan pakej mvn, ujian unit juga dijalankan . Tetapi bagaimana jika kita mahu mengemas artifak dengan cepat dan menjalankannya untuk melihat apakah ia berfungsi?
Pertama, kami akan membuat profil tanpa ujian yang menetapkan harta maven.test.skip menjadi benar:
no-tests true
Seterusnya, kami akan melaksanakan profil dengan menjalankan perintah pv-pno-tes mvn . Kini artifak dibuat dan ujian dilangkau. Dalam kes ini, arahan mvn package -Dmaven.test.skip akan lebih mudah.
Namun, ini hanyalah pengenalan kepada profil Maven. Mari lihat beberapa persediaan yang lebih kompleks.
3. Menyatakan Profil
Pada bahagian sebelumnya, kami melihat cara membuat satu profil. Kita boleh mengkonfigurasi seberapa banyak profil yang kita mahukan dengan memberikan mereka id unik.
Katakanlah kami ingin membuat profil yang hanya menjalankan ujian integrasi kami dan yang lain untuk satu set ujian mutasi.
Kami akan memulakan dengan menentukan id untuk masing-masing dalam fail pom.xml kami :
integration-tests mutation-tests
Dalam setiap elemen profil , kita dapat mengkonfigurasi banyak elemen seperti pergantungan , pemalam , sumber , nama akhir .
Jadi, untuk contoh di atas, kita boleh menambahkan pemalam dan kebergantungannya secara berasingan untuk ujian integrasi dan ujian mutasi .
Mengasingkan ujian ke dalam profil dapat menjadikan binaan lalai lebih cepat dengan memfokuskannya, katakanlah, hanya pada ujian unit.
3.1. Skop Profil
Sekarang, kami hanya meletakkan profil ini dalam fail pom.xml kami , yang menyatakannya hanya untuk projek kami.
Tetapi, di Maven 3, kita sebenarnya dapat menambahkan profil ke salah satu dari tiga lokasi:
- Profil khusus projek masuk ke fail pom.xml projek
- Profil pengguna khusus pergi ke pengguna settings.xml fail
- Profil global masuk ke dalam fail setting.xml global
Perhatikan bahawa Maven 2 menyokong lokasi keempat, tetapi ini dikeluarkan di Maven 3.
Kami cuba mengkonfigurasi profil di pom.xml seboleh-bolehnya. Sebabnya ialah kita mahu menggunakan profil baik pada mesin pembangunan kita dan pada mesin binaan. Menggunakan setting.xml lebih sukar dan terdedah kepada ralat kerana kita sendiri mesti menyebarkannya ke persekitaran bina.
4. Mengaktifkan Profil
Selepas kita membuat satu atau lebih profil, kita boleh mula menggunakannya, atau dengan kata lain, mengaktifkannya .
4.1. Melihat Profil Yang Aktif
Mari gunakan bantuan: matlamat profil aktif untuk melihat profil yang aktif dalam binaan lalai kami:
mvn help:active-profiles
Sebenarnya, kerana kami belum mengaktifkan apa-apa, kami mendapat:
The following profiles are active:
Tidak ada apa-apa.
Kami akan mengaktifkannya sebentar lagi. Tetapi dengan cepat, cara lain untuk melihat apa yang diaktifkan adalah memasukkan plugin help -ven di pom.xml kami dan mengikat matlamat profil aktif ke fasa penyusunan :
org.apache.maven.plugins maven-help-plugin 3.2.0 show-profiles compile active-profiles
Sekarang, mari kita gunakan! Kami akan melihat beberapa cara yang berbeza.
4.2. Menggunakan -P
Sebenarnya, kita sudah melihat satu cara pada awalnya, iaitu kita dapat mengaktifkan profil dengan argumen -P .
Oleh itu mari kita mulakan dengan mengaktifkan profil ujian integrasi :
mvn package -P integration-tests
Sekiranya kita mengesahkan profil aktif, dengan maven-help-plugin atau bantuan mvn: aktif-profil -P integrasi-ujian arahan kita akan mendapat hasil berikut:
The following profiles are active: - integration-tests
Sekiranya kami ingin mengaktifkan beberapa profil pada masa yang sama, kami menggunakan senarai profil yang dipisahkan dengan koma:
mvn package -P integration-tests,mutation-tests
4.3. Aktif secara Lalai
Sekiranya kita selalu ingin melaksanakan profil, kita boleh menjadikannya aktif secara lalai:
integration-tests true
Kemudian, kita dapat menjalankan pakej mvn tanpa menentukan profil, dan kita dapat mengesahkan bahawa profil ujian integrasi aktif.
Walau bagaimanapun, jika kita menjalankan perintah Maven dan mengaktifkan profil lain daripada profil activeByDefault dilangkau. Oleh itu, apabila kita menjalankan pakej mvn -P mutation-test maka hanya profil ujian mutasi yang aktif.
Apabila kita mengaktifkan dengan cara lain, profil activeByDefault juga dilangkau seperti yang akan kita lihat di bahagian seterusnya.
4.4. Berdasarkan Harta
Kita boleh mengaktifkan profil pada baris perintah. Namun, kadangkala lebih senang jika diaktifkan secara automatik. Sebagai contoh, kita dapat mendasarkannya pada harta sistem -D :
active-on-property-environment environment
Kami sekarang mengaktifkan profil dengan pakej mvn -Denvironment command.
Anda juga boleh mengaktifkan profil jika harta tanah tidak ada:
!environment
Atau kita boleh mengaktifkan profil jika harta itu mempunyai nilai tertentu:
environment test
Kita sekarang boleh menjalankan profil dengan pakej mvn -Denvironment = test.
Terakhir, kita dapat mengaktifkan profil jika harta itu mempunyai nilai lain daripada nilai yang ditentukan:
environment !test
4.5. Berdasarkan Versi JDK
Pilihan lain adalah mengaktifkan profil berdasarkan JDK yang berjalan di mesin. Dalam kes ini, kami ingin mengaktifkan profil jika versi JDK bermula dengan 11:
active-on-jdk-11 11
Kami juga dapat menggunakan rentang untuk versi JDK seperti yang dijelaskan dalam Maven Version Range Syntax.
4.6. Berdasarkan Sistem Operasi
Sebagai alternatif, kita dapat mengaktifkan profil berdasarkan beberapa maklumat sistem operasi.
Dan jika kita tidak yakin dengan itu, pertama-tama kita dapat menggunakan perintah mvn نافذ: arahan -maklumat yang memberikan output berikut pada 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
Selepas itu, kita dapat mengkonfigurasi profil yang hanya diaktifkan pada Windows 10:
active-on-windows-10 windows 10 Windows amd64 10.0
4.7. Berdasarkan Fail
Pilihan lain adalah menjalankan profil jika fail ada atau hilang .
Oleh itu, mari buat profil ujian yang hanya dapat dilaksanakan sekiranya testreport.html belum ada:
target/testreport.html
5. Menyahaktifkan Profil
Kami telah melihat banyak cara untuk mengaktifkan profil, tetapi kadang-kadang kita juga perlu melumpuhkannya.
Untuk mematikan profil kita boleh menggunakan '!' atau '-'.
Oleh itu, untuk melumpuhkan profil aktif-on-jdk-11 kami melaksanakan perintah mvn compile -P -active-on-jdk-11 .
6. Kesimpulannya
Dalam artikel ini, kami telah melihat cara bekerja dengan profil Maven, sehingga kami dapat membuat konfigurasi binaan yang berbeza.
Profil membantu melaksanakan elemen-elemen tertentu dari binaan ketika kita memerlukannya. Ini mengoptimumkan proses pembuatan kami dan membantu memberi maklum balas yang lebih pantas kepada pembangun.
Jangan ragu untuk melihat fail pom.xml yang sudah selesai di GitHub.