6.1 Pengantar plugin

Siklus hidup standar dapat ditingkatkan dengan fungsionalitas menggunakan plugin Maven. Plugin memungkinkan Anda memasukkan langkah-langkah baru ke dalam siklus standar (misalnya, distribusi ke server aplikasi) atau memperluas langkah-langkah yang ada.

Plugin di Maven bukanlah sesuatu yang luar biasa, sebaliknya, itu adalah hal yang paling umum dan sering ditemui. Lagi pula, jika Anda ingin mengatur beberapa nuansa membangun proyek Anda, Anda perlu menentukan informasi yang diperlukan di pom.xml. Dan satu-satunya cara untuk melakukannya adalah dengan menulis "plugin".

Karena plugin adalah artefak yang sama banyaknya dengan dependensi, mereka dijelaskan dengan cara yang hampir sama. Alih-alih bagian dependensi - plugin, alih-alih dependensi - plugin, alih-alih repositori - pluginRepositories, repositori - pluginRepository.

Contoh:

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

Mendeklarasikan plugin di pom.xml memungkinkan Anda untuk memperbaiki versi plugin, serta mengatur parameter yang diperlukan untuknya, menentukan berbagai parameter konfigurasi, dan mengikat ke fase.

Dengan kata lain, Maven menjalankan plugin tertentu yang melakukan semua pekerjaan. Artinya, jika kita ingin mengajari Maven tentang build khusus proyek, maka kita perlu menambahkan indikasi ke pom.xml untuk meluncurkan plugin yang diinginkan dalam fase yang diperlukan dan dengan parameter yang diperlukan .

Jumlah plugin yang tersedia sangat banyak, ada berbagai plugin yang memungkinkan Anda menjalankan aplikasi web langsung dari maven untuk mengujinya di browser, menghasilkan sumber daya, dan sejenisnya. Tugas utama pengembang dalam situasi ini adalah menemukan dan menerapkan kumpulan plugin yang paling sesuai .

6.2 Siklus hidup dan plugin

Sangat sering, sebuah plugin digunakan untuk meluncurkan semacam utilitas konsol selama pelaksanaan fase tertentu. Selain itu, kita bahkan dapat menjalankan kelas Java biasa (yang tentunya memiliki metode utama).

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 plugin dapat dikonfigurasi dengan sangat fleksibel. Semua plugin resmi dari pengembang Maven didokumentasikan dengan sangat baik di situs web resmi Maven. Misalnya, untuk maven-compiler-plugin di halaman Proyek Apache Maven, Anda dapat melihat daftar semua variabel yang mengontrol plugin. Informasi tentang plugin tersedia di tautan

Informasi yang lebih penting. Plugin yang berbeda dipanggil oleh Maven pada berbagai tahap siklus hidupnya. Misalnya, sebuah proyek yang mendeskripsikan aplikasi desktop Java yang berayun memiliki tahapan siklus hidup yang berbeda dari yang umum untuk pengembangan aplikasi web (perang).

Atau, misalnya, ketika perintah "pengujian mvn" dijalankan, seluruh rangkaian langkah dalam siklus hidup proyek dimulai: "sumber daya proses", "kompilasi", "kelas proses", "pengujian proses -resources", "uji-kompilasi", uji. Anda dapat melihat penyebutan fase-fase ini dalam pesan yang ditampilkan 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 di Maven - gol

Di Maven juga ada yang namanya tujuan (goal). tujuannya adalah seperti target startup Maven. Tujuan utama bertepatan dengan fase utama:

  • mengesahkan;
  • menyusun;
  • tes;
  • kemasan;
  • memeriksa;
  • Install;
  • menyebarkan.

Di setiap fase siklus hidup proyek, plugin tertentu (jar-library) dipanggil, yang mencakup sejumlah tujuan (goal)

Misalnya, plugin "maven-compiler-plugin" berisi dua target: compiler:compile untuk mengompilasi kode sumber utama proyek, dan compiler:testCompile untuk mengompilasi pengujian. Secara formal, daftar fase dapat diubah, meskipun hal ini jarang diperlukan.

Jika Anda perlu melakukan beberapa tindakan non-standar dalam fase tertentu, Anda hanya perlu menambahkan plugin yang sesuai ke 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>

Hal terpenting dalam hal ini adalah menentukan nama fase "eksekusi/fase" untuk plugin, di mana Anda perlu menyematkan panggilan ke tujuan "tujuan" plugin. Misalnya, Anda perlu membuat kode Java berdasarkan xml. Maka Anda memerlukan fase "hasilkan sumber", yang ditempatkan sebelum panggilan ke fase kompilasi dan ideal untuk menghasilkan bagian dari sumber proyek.