Plugin Kompilator Maven

Artikel ini bagian dari serial: • Maven Resources Plugin

• Maven Compiler Plugin (artikel saat ini) • Panduan Cepat untuk Maven Install Plugin

• Plugin Maven Failsafe

• Panduan Cepat untuk Plugin Maven Surefire

• Plugin Penyebaran Maven

• Plugin Maven Clean

• Plugin Maven Verifier

• Plugin Situs Maven

• Panduan untuk Plugin Core Maven

1. Ikhtisar

Tutorial singkat ini memperkenalkan plugin compiler , salah satu plugin inti dari alat build Maven.

Untuk gambaran umum tentang plugin inti lainnya, lihat artikel ini.

2. Tujuan Plugin

The compiler Plugin digunakan untuk mengkompilasi kode sumber dari sebuah proyek Maven . Plugin ini memiliki dua tujuan, yang sudah terikat pada fase tertentu dari siklus hidup default:

  • kompilasi - kompilasi file sumber utama
  • testCompile - kompilasi file sumber pengujian

Berikut plugin compiler di POM:

 maven-compiler-plugin 3.7.0  ...  

Kami dapat menemukan versi terbaru dari plugin ini di sini.

3. Konfigurasi

Secara default, plugin compiler mengkompilasi kode sumber yang kompatibel dengan Java 5, dan class yang dihasilkan juga bekerja dengan Java 5 terlepas dari JDK yang digunakan. Kami dapat mengubah pengaturan ini di elemen konfigurasi :

 1.8 1.8  

Untuk kenyamanan, kami dapat menyetel versi Java sebagai properti POM:

 1.8 1.8 

Terkadang kami ingin meneruskan argumen ke kompiler javac . Di sinilah parameter compilerArgs berguna.

Misalnya, kita dapat menetapkan konfigurasi berikut untuk kompilator untuk memperingatkan tentang operasi yang tidak dicentang:

   -Xlint:unchecked  

Saat menyusun kelas ini:

public class Data { List textList = new ArrayList(); public void addText(String text) { textList.add(text); } public List getTextList() { return this.textList; } }

kita akan melihat peringatan yang tidak dicentang di konsol:

[WARNING] ... Data.java:[7,29] unchecked conversion required: java.util.List found: java.util.ArrayList

Karena kedua tujuan plugin kompilator secara otomatis terikat ke fase dalam siklus hidup default Maven, kita dapat menjalankan tujuan ini dengan perintah mvn compile dan mvn test-compile .

4. Pembaruan Java 9

4.1. Konfigurasi

Hingga Java 8, kami menggunakan nomor versi sebagai 1. x di mana x mewakili versi Java, seperti 1.8 untuk Java 8.

Untuk Java 9 ke atas, kita bisa langsung menggunakan nomor versinya:

 9 9 

Demikian pula, kita dapat mendefinisikan versi menggunakan properti sebagai:

 9 9 

Maven menambahkan dukungannya untuk Java 9 di 3.5.0, jadi kami memerlukan setidaknya versi itu. Kami juga akan memerlukan setidaknya 3.8.0 dari maven-compiler-plugin :

   org.apache.maven.plugins maven-compiler-plugin 3.8.0  9 9    

4.2. Membangun

Sekarang saatnya menguji konfigurasi kita.

Pertama, mari buat kelas MavenCompilerPlugin tempat kita mengimpor paket dari modul lain.

Yang sederhana adalah javax.xml.XMLConstants.XML_NS_PREFIX:

public class MavenCompilerPlugin { public static void main(String[] args) { System.out.println("The XML namespace prefix is: " + XML_NS_PREFIX); } }

Selanjutnya, mari kita kompilasi:

mvn -q clean compile exec:java -Dexec.mainClass="com.baeldung.maven.java9.MavenCompilerPlugin"

Namun, saat menggunakan default Java 9, kita akan mendapatkan error:

[ERROR] COMPILATION ERROR : [ERROR] .../MavenCompilerPlugin.java:[3,20] package javax.xml is not visible (package javax.xml is declared in module java.xml, but module com.baeldung.maven.java9 does not read it) [ERROR] .../MavenCompilerPlugin.java:[3,1] static import only from classes and interfaces [ERROR] .../MavenCompilerPlugin.java:[7,62] cannot find symbol symbol: variable XML_NS_PREFIX location: class com.baeldung.maven.java9.MavenCompilerPlugin

Kesalahan ini berasal dari fakta bahwa paket ini berada dalam modul terpisah yang belum kami sertakan dalam build kami.

Cara termudah untuk menyelesaikannya adalah dengan membuat kelas module-info.java dan menunjukkan bahwa kami memerlukan modul java.xml :

module com.baeldung.maven.java9 { requires java.xml; }

Sekarang kita bisa coba lagi:

mvn -q clean compile exec:java -Dexec.mainClass="com.baeldung.maven.java9.MavenCompilerPlugin"

Dan output kami adalah:

The XML namespace prefix is: xml

5. Kesimpulan

Di artikel ini, kami membahas plugin compiler dan menjelaskan cara menggunakannya. Kami juga belajar tentang dukungan Maven untuk Java 9.

Kode sumber lengkap untuk tutorial ini dapat ditemukan di GitHub.

Berikutnya » Panduan Cepat tentang Maven Install Plugin « Sebelumnya Maven Resources Plugin