Pengantar Plugin Animal Sniffer Maven

1. Perkenalan

Saat bekerja di Java, ada kalanya kita perlu menggunakan beberapa versi bahasa secara bersamaan.

Merupakan hal yang umum untuk membutuhkan program Java kami agar waktu kompilasi kompatibel dengan satu versi Java (katakanlah - Java 6) tetapi perlu menggunakan versi yang berbeda (katakanlah - Java 8) di alat pengembangan kami dan versi yang mungkin berbeda untuk menjalankan aplikasi .

Dalam artikel singkat ini, kami akan mendemonstrasikan betapa mudahnya menambahkan pengamanan inkompatibilitas berbasis versi Java dan bagaimana plugin Animal Sniffer dapat digunakan untuk menandai masalah ini pada waktu pembuatan dengan memeriksa proyek kami terhadap tanda tangan yang dibuat sebelumnya.

2. Menyetel -source dan -target dari Java Compiler

Mari kita mulai dengan proyek hello world Maven - di mana kami menggunakan Java 7 di mesin lokal kami, tetapi kami ingin menerapkan proyek tersebut ke lingkungan produksi yang masih menggunakan Java 6.

Dalam kasus ini, kita dapat mengkonfigurasi plugin kompilator Maven dengan field source dan target yang mengarah ke Java 6.

Bidang "sumber" digunakan untuk menentukan kompatibilitas dengan perubahan bahasa Java dan bidang "target" digunakan untuk menentukan kompatibilitas dengan perubahan JVM.

Sekarang mari kita lihat konfigurasi kompiler Maven dari pom.xml:

  org.apache.maven.plugins maven-compiler-plugin 3.7.0  1.6 1.6   

Dengan Java 7 di mesin lokal kami dan kode Java yang mencetak "hello world" ke konsol, jika kami melanjutkan dan membangun proyek ini menggunakan Maven, itu akan membangun dan bekerja dengan benar pada kotak produksi yang menjalankan Java 6.

3. Memperkenalkan Inkompatibilitas API

Sekarang mari kita lihat betapa mudahnya memperkenalkan ketidakcocokan API secara tidak sengaja.

Katakanlah kita mulai mengerjakan beberapa persyaratan baru dan kita menggunakan beberapa fitur API Java 7 yang tidak ada di Java 6.

Mari kita lihat kode sumber yang diperbarui:

public static void main(String[] args) { System.out.println("Hello World!"); System.out.println(StandardCharsets.UTF_8.name()); }

java.nio.charset.StandardCharsets diperkenalkan di Java 7.

Jika sekarang kita melanjutkan dan menjalankan build Maven, build Maven masih akan berhasil dikompilasi tetapi gagal saat runtime dengan error linkage pada kotak produksi dengan Java 6 diinstal.

Dokumentasi Maven menyebutkan jebakan ini dan merekomendasikan untuk menggunakan plugin Animal Sniffer sebagai salah satu opsinya.

4. Pelaporan Kompatibilitas API

Plugin Animal Sniffer menyediakan dua kemampuan inti:

  1. Membuat tanda tangan runtime Java
  2. Memeriksa proyek terhadap tanda tangan API

Sekarang mari kita memodifikasi pom.xml untuk memasukkan plugin:

 org.codehaus.mojo animal-sniffer-maven-plugin 1.16   org.codehaus.mojo.signature java16 1.0     animal-sniffer verify  check    

Di sini, bagian konfigurasi Animal Sniffer mengacu pada tanda tangan runtime Java 6 yang sudah ada. Juga, bagian eksekusi memeriksa dan memverifikasi kode sumber proyek terhadap tanda tangan dan tanda yang diberikan jika ada masalah yang ditemukan.

Jika kita melanjutkan dan membangun proyek Maven, pembangunan akan gagal dengan plugin melaporkan kesalahan verifikasi tanda tangan seperti yang diharapkan:

[INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.codehaus.mojo:animal-sniffer-maven-plugin:1.16:check (animal-sniffer) on project example-animal-sniffer-mvn-plugin: Signature errors found. Verify them and ignore them with the proper annotation if needed.

5. Kesimpulan

Dalam tutorial ini, kami menjelajahi plugin Maven Animal Sniffer dan bagaimana itu dapat digunakan untuk melaporkan ketidaksesuaian terkait API jika ada pada waktu pembuatan.

Seperti biasa, kode sumber lengkap tersedia di GitHub.