Matlamat dan Fasa Maven

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan meneroka pelbagai kitaran hidup dan fasa Maven yang berbeza.

Kami juga akan membincangkan hubungan teras antara Matlamat dan Fasa.

2. Kitaran Hidup Membina Maven

Pembinaan Maven mengikuti kitaran hidup tertentu untuk menyebarkan dan menyebarkan projek sasaran.

Terdapat tiga kitaran hidup terbina dalam:

  • lalai: kitaran hidup utama kerana bertanggungjawab untuk pelaksanaan projek
  • clean: untuk membersihkan projek dan membuang semua fail yang dihasilkan oleh binaan sebelumnya
  • laman web: untuk membuat dokumentasi tapak projek

Setiap kitaran hidup terdiri daripada urutan fasa. Yang lalai kitaran bina hidup terdiri daripada 23 fasa kerana ia membina kitaran hayat utama.

Sebaliknya, kitaran hidup bersih terdiri daripada 3 fasa, sementara kitaran hidup laman terdiri dari 4 fasa.

3. Fasa Maven

Fasa Maven mewakili tahap dalam kitaran hidup membina Maven . Setiap fasa bertanggungjawab untuk tugas tertentu.

Berikut adalah beberapa fasa yang paling penting dalam kitaran hayat binaan lalai :

  • mengesahkan: periksa sama ada semua maklumat yang diperlukan untuk binaan tersedia
  • menyusun: menyusun kod sumber
  • test-compile: menyusun kod sumber ujian
  • ujian: menjalankan ujian unit
  • paket: pakej disusun kod sumber ke dalam format yang boleh diedarkan (balang, perang, ...)
  • integrasi-ujian: memproses dan menggunakan pakej jika diperlukan untuk menjalankan ujian integrasi
  • install: pasang pakej ke repositori tempatan
  • menyebarkan: menyalin pakej ke repositori jauh

Untuk senarai lengkap setiap fasa kitaran hidup, lihat Rujukan Maven.

Fasa dijalankan mengikut urutan tertentu. Ini bermaksud bahawa jika kita menjalankan fasa tertentu menggunakan perintah:

mvn 

Ini tidak hanya akan melaksanakan fasa yang ditentukan tetapi juga semua fasa sebelumnya.

Sebagai contoh, jika kita menghadapi mengerahkan fasa - yang merupakan fasa terakhir dalam lalai membina kitaran hayat - yang akan melaksanakan semua fasa sebelum mengerahkan fasa juga, yang merupakan keseluruhan lalai kitaran hayat:

mvn deploy

4. Matlamat Maven

Setiap fasa adalah urutan tujuan, dan setiap tujuan bertanggungjawab untuk tugas tertentu.

Ketika kita menjalankan fasa - semua tujuan yang terikat pada fasa ini dilaksanakan dengan teratur.

Berikut adalah beberapa fasa dan tujuan lalai yang terikat kepada mereka:

  • compiler: compile - matlamat kompilasi dari plugin penyusun terikat ke fasa kompilasi
  • penyusun: testCompile terikat pada fasa kompilasi ujian
  • surefire: ujian terikat pada fasa ujian
  • install: install terikat untuk memasang fasa
  • jar: jar dan perang: perang terikat pada fasa pakej

Kami dapat menyenaraikan semua tujuan yang terikat pada fasa tertentu dan pemalamnya menggunakan perintah:

mvn help:describe -Dcmd=PHASENAME

Sebagai contoh, untuk menyenaraikan semua matlamat yang terikat pada fasa penyusunan , kita boleh menjalankan:

mvn help:describe -Dcmd=compile

Dan dapatkan output sampel:

compile' is a phase corresponding to this plugin: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Yang, seperti yang disebutkan di atas, bermaksud tujuan kompilasi dari plugin penyusun terikat ke fasa kompilasi .

5. Plugin Maven

Plugin Maven adalah sekumpulan matlamat. Walau bagaimanapun, tujuan ini tidak semestinya terikat pada fasa yang sama.

Sebagai contoh, berikut adalah konfigurasi ringkas plugin Maven Failsafe yang bertanggungjawab untuk menjalankan ujian integrasi:

   maven-failsafe-plugin ${maven.failsafe.version}    integration-test verify      

Seperti yang kita lihat, plugin Failsafe mempunyai dua tujuan utama yang dikonfigurasi di sini:

  • integrasi-ujian : jalankan ujian integrasi
  • mengesahkan : mengesahkan semua ujian integrasi lulus

We can use the following command to list all goals in a specific plugin:

mvn :help

For example, to list all goals in the Failsafe plugin:

mvn failsafe:help

And the output of this will be:

This plugin has 3 goals: failsafe:help Display help information on maven-failsafe-plugin. Call mvn failsafe:help -Ddetail=true -Dgoal= to display parameter details. failsafe:integration-test Run integration tests using Surefire. failsafe:verify Verify integration tests ran using Surefire.

To run a specific goal, without executing its entire phase (and the preceding phases) we can use the command:

mvn :

For example, to run integration-test goal from Failsafe plugin, we need to run:

mvn failsafe:integration-test

6. Building a Maven Project

To build a Maven project, we need to execute one of the life cycles by running one of their phases:

mvn deploy

This will execute the entire default lifecycle. Alternatively, we can stop at the install phase:

mvn install

But usually we'll use the command:

mvn clean install

Untuk membersihkan projek terlebih dahulu - dengan menjalankan kitaran hidup bersih - sebelum binaan baru.

Kami juga hanya dapat menjalankan tujuan khusus pemalam:

mvn compiler:compile

Perhatikan bahawa jika kita cuba membina projek Maven tanpa menentukan fasa atau matlamat, itu akan menyebabkan ralat:

[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal

7. Kesimpulannya

Dalam artikel ini, kami membincangkan siklus hidup Maven serta hubungan antara fasa dan tujuan Maven.