Plugin du compilateur Maven

Cet article fait partie d'une série: • Plugin de ressources Maven

• Plugin du compilateur Maven (article actuel) • Guide rapide du plugin d'installation Maven

• Le plugin Maven Failsafe

• Guide rapide du plug-in Maven Surefire

• Le plugin Maven Deploy

• Le plugin Maven Clean

• Le plug-in Maven Verifier

• Le plugin de site Maven

• Guide des principaux plugins Maven

1. Vue d'ensemble

Ce tutoriel rapide présente le plugin du compilateur , l'un des principaux plugins de l'outil de construction Maven.

Pour un aperçu des autres plugins principaux, reportez-vous à cet article.

2. Objectifs du plug-in

Le plugin du compilateur est utilisé pour compiler le code source d'un projet Maven . Ce plugin a deux objectifs, qui sont déjà liés à des phases spécifiques du cycle de vie par défaut:

  • compile - compile les fichiers sources principaux
  • testCompile - compile les fichiers source de test

Voici le plugin du compilateur dans le POM:

 maven-compiler-plugin 3.7.0  ...  

Nous pouvons trouver la dernière version de ce plugin ici.

3. Configuration

Par défaut, le plugin du compilateur compile le code source compatible avec Java 5, et les classes générées fonctionnent également avec Java 5 quel que soit le JDK utilisé. Nous pouvons modifier ces paramètres dans l' élément de configuration :

 1.8 1.8  

Pour plus de commodité, nous pouvons définir la version Java comme propriétés du POM:

 1.8 1.8 

Parfois, nous voulons passer des arguments au compilateur javac . C'est là que le paramètre compilerArgs est utile.

Par exemple, nous pouvons spécifier la configuration suivante pour que le compilateur avertisse des opérations non vérifiées:

   -Xlint:unchecked  

Lors de la compilation de cette classe:

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

nous verrons un avertissement non coché sur la console:

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

Comme les deux objectifs du plugin du compilateur sont automatiquement liés à des phases du cycle de vie par défaut de Maven, nous pouvons exécuter ces objectifs avec les commandes mvn compile et mvn test-compile .

4. Mises à jour de Java 9

4.1. Configuration

Jusqu'à Java 8, nous utilisions le numéro de version comme 1. xx représente la version de Java, comme 1.8 pour Java 8.

Pour Java 9 et supérieur, nous pouvons simplement utiliser le numéro de version directement:

 9 9 

De même, nous pouvons définir la version en utilisant les propriétés comme:

 9 9 

Maven a ajouté sa prise en charge de Java 9 dans 3.5.0, nous aurons donc besoin d'au moins cette version. Nous aurons également besoin d'au moins 3.8.0 du plugin maven -compiler-plugin :

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

4.2. Construire

Il est maintenant temps de tester notre configuration.

Tout d'abord, créons une classe MavenCompilerPlugin dans laquelle nous importons un package d'un autre module.

Un simple est 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); } }

Ensuite, compilons-le:

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

Cependant, lors de l'utilisation des valeurs par défaut de Java 9, nous obtiendrons une erreur:

[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'erreur vient du fait que ce package est dans un module séparé que nous n'avons pas encore inclus dans notre build.

Le moyen le plus simple de résoudre ce problème est de créer une classe module-info.java et d'indiquer que nous avons besoin du module java.xml :

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

Maintenant, nous pouvons réessayer:

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

Et notre sortie sera:

The XML namespace prefix is: xml

5. Conclusion

Dans cet article, nous avons passé en revue le plugin du compilateur et décrit comment l'utiliser. Nous avons également appris le support de Maven pour Java 9.

Le code source complet de ce didacticiel se trouve à l'adresse over sur GitHub.

Suivant » Guide rapide du plugin d'installation Maven « Précédent Plugin Maven Resources