Plugin del compilatore Maven

Questo articolo fa parte di una serie: • Maven Resources Plugin

• Maven Compiler Plugin (articolo corrente) • Guida rapida al Maven Install Plugin

• Il plug-in Failsafe di Maven

• Guida rapida al plug-in Maven Surefire

• Il plugin Maven Deploy

• Il plugin Maven Clean

• Il plugin Maven Verifier

• Il plug-in del sito Maven

• Guida ai plugin principali di Maven

1. Panoramica

Questo rapido tutorial introduce il plug-in del compilatore , uno dei plug-in principali dello strumento di compilazione Maven.

Per una panoramica degli altri plugin principali, fare riferimento a questo articolo.

2. Obiettivi del plugin

Il plug-in del compilatore viene utilizzato per compilare il codice sorgente di un progetto Maven . Questo plugin ha due obiettivi, che sono già legati a fasi specifiche del ciclo di vita predefinito:

  • compile - compila i file sorgenti principali
  • testCompile - compila i file sorgente di test

Ecco il plug-in del compilatore nel POM:

 maven-compiler-plugin 3.7.0  ...  

Possiamo trovare l'ultima versione di questo plugin qui.

3. Configurazione

Per impostazione predefinita, il plug-in del compilatore compila il codice sorgente compatibile con Java 5 e le classi generate funzionano anche con Java 5 indipendentemente dal JDK in uso. Possiamo modificare queste impostazioni nell'elemento di configurazione :

 1.8 1.8  

Per comodità, possiamo impostare la versione Java come proprietà del POM:

 1.8 1.8 

A volte vogliamo passare argomenti al compilatore javac . È qui che il parametro compilerArgs torna utile.

Ad esempio, possiamo specificare la seguente configurazione per il compilatore per avvisare delle operazioni non controllate:

   -Xlint:unchecked  

Durante la compilazione di questa classe:

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

vedremo un avviso non controllato sulla console:

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

Poiché entrambi gli obiettivi del plug-in del compilatore sono automaticamente associati alle fasi del ciclo di vita predefinito di Maven, possiamo eseguire questi obiettivi con i comandi mvn compile e mvn test-compile .

4. Aggiornamenti Java 9

4.1. Configurazione

Fino a Java 8, abbiamo utilizzato il numero di versione come 1. x dove x rappresenta la versione di Java, come 1.8 per Java 8.

Per Java 9 e versioni successive, possiamo semplicemente utilizzare direttamente il numero di versione:

 9 9 

Allo stesso modo, possiamo definire la versione utilizzando proprietà come:

 9 9 

Maven ha aggiunto il supporto per Java 9 nella 3.5.0, quindi avremo bisogno almeno di quella versione. Avremo anche bisogno di almeno 3.8.0 del plug-in del compilatore di maven :

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

4.2. Costruire

Ora è il momento di testare la nostra configurazione.

Per prima cosa, creiamo una classe MavenCompilerPlugin in cui stiamo importando un pacchetto da un altro modulo.

Uno semplice è 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); } }

Quindi, compiliamolo:

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

Quando si utilizzano le impostazioni predefinite di Java 9, tuttavia, riceveremo un errore:

[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

L'errore deriva dal fatto che questo pacchetto si trova in un modulo separato che non abbiamo ancora incluso nella nostra build.

Il modo più semplice per risolvere questo problema è creare una classe module-info.java e indicare che abbiamo bisogno del modulo java.xml :

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

Ora possiamo riprovare:

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

E il nostro output sarà:

The XML namespace prefix is: xml

5. conclusione

In questo articolo, abbiamo esaminato il plug- in del compilatore e descritto come usarlo. Abbiamo anche appreso del supporto di Maven per Java 9.

Il codice sorgente completo per questo tutorial può essere trovato su GitHub.

Avanti » Guida rapida al plug-in di installazione di Maven « Precedente plug-in delle risorse di Maven