6.1 Pengenalan kepada pemalam

Kitaran hayat standard boleh dipertingkatkan dengan kefungsian menggunakan pemalam Maven. Pemalam membenarkan anda memasukkan langkah baharu ke dalam kitaran standard (contohnya, pengedaran ke pelayan aplikasi) atau melanjutkan langkah sedia ada.

Pemalam dalam Maven bukanlah sesuatu yang luar biasa, sebaliknya, ia adalah perkara yang paling biasa dan kerap ditemui. Lagipun, jika anda ingin menetapkan beberapa nuansa membina projek anda, maka anda perlu menentukan maklumat yang diperlukan dalam pom.xml. Dan satu-satunya cara untuk melakukan ini ialah menulis "plugin".

Memandangkan pemalam adalah sama banyak artifak seperti kebergantungan, ia diterangkan dengan cara yang sama. Daripada bahagian dependensi - pemalam, bukannya pergantungan - pemalam, bukannya repositori - pluginRepositories, repositori - pluginRepository.

Contoh:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
    </plugin>
</plugins>

Mengisytiharkan pemalam dalam pom.xml membolehkan anda membetulkan versi pemalam, serta menetapkan parameter yang diperlukan untuknya, mentakrifkan pelbagai parameter konfigurasi dan mengikat kepada fasa.

Dengan kata lain, Maven menjalankan pemalam tertentu yang melakukan semua kerja. Iaitu, jika kita ingin mengajar Maven tentang binaan khas projek, maka kita perlu menambah pada pom.xml petunjuk untuk melancarkan pemalam yang dikehendaki dalam fasa yang diperlukan dan dengan parameter yang diperlukan .

Bilangan pemalam yang tersedia adalah sangat besar, terdapat pelbagai pemalam yang membolehkan anda menjalankan aplikasi web secara terus dari maven untuk mengujinya dalam pelayar, menjana sumber, dan seumpamanya. Tugas utama pembangun dalam situasi ini adalah untuk mencari dan menggunakan set pemalam yang paling sesuai .

6.2 Kitaran hayat dan pemalam

Selalunya, pemalam digunakan untuk melancarkan beberapa jenis utiliti konsol semasa pelaksanaan fasa tertentu. Selain itu, kita juga boleh menjalankan kelas Java biasa (yang mempunyai kaedah utama, sudah tentu).

Contoh:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>com.example.Main</mainClass>
    <arguments>
      <argument>first-argument</argument>
      <argument>second-argument</argument>
    </arguments>
  </configuration>
</plugin>

Biasanya pemalam boleh dikonfigurasikan dengan sangat fleksibel. Semua pemalam rasmi daripada pembangun Maven didokumenkan dengan sangat baik di laman web rasmi Maven. Contohnya, untuk maven-compiler-plugin pada halaman Apache Maven Project, anda boleh melihat senarai semua pembolehubah yang mengawal pemalam. Maklumat mengenai pemalam tersedia di pautan

Maklumat yang lebih penting. Pemalam yang berbeza dipanggil oleh Maven pada peringkat kitaran hayat yang berbeza. Sebagai contoh, projek yang menerangkan aplikasi desktop Java swing mempunyai peringkat kitaran hayat yang berbeza daripada yang biasa untuk pembangunan aplikasi web (perang).

Atau, sebagai contoh, apabila arahan "mvn test" dilaksanakan, satu set keseluruhan langkah dalam kitaran hayat projek dimulakan: "process-resources", "compile", "process-classes", "process-test -resources”, “test-compile” , ujian. Anda boleh melihat sebutan fasa ini dalam mesej yang dipaparkan oleh Maven:

[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)     @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile)      @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources         (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile)          @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test)         @ codegym ---
[INFO] Surefire report directory:           t:\ projects\codegym\target\surefire-reports

6.3 Gol dalam Maven - gol

Dalam Maven, terdapat juga perkara seperti matlamat (matlamat). matlamat adalah seperti sasaran permulaan Maven. Matlamat utama bertepatan dengan fasa utama:

  • mengesahkan;
  • menyusun;
  • ujian;
  • pakej;
  • mengesahkan;
  • memasang;
  • mengerahkan.

Dalam setiap fasa kitaran hayat projek, pemalam tertentu (jar-library) dipanggil, yang merangkumi beberapa matlamat (matlamat)

Sebagai contoh, pemalam "maven-compiler-plugin" mengandungi dua sasaran: compiler:compile untuk menyusun kod sumber utama projek dan compiler:testCompile untuk menyusun ujian. Secara rasmi, senarai fasa boleh diubah, walaupun ini jarang diperlukan.

Jika anda perlu melakukan beberapa tindakan bukan standard dalam fasa tertentu, maka anda hanya perlu menambah pemalam yang sesuai pada pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>Name-plugin</artifactId>
  <executions>
    <execution>
      <id>customTask</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>pluginGoal</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Perkara yang paling penting dalam kes ini adalah untuk menentukan nama pemalam fasa "pelaksanaan/fasa", di mana anda perlu membenamkan panggilan ke matlamat "matlamat" pemalam. Sebagai contoh, anda perlu menjana kod Java berdasarkan xml. Kemudian anda memerlukan fasa "jana-sumber", yang diletakkan sebelum panggilan ke fasa penyusunan dan sesuai untuk menjana sebahagian daripada sumber projek.