Ce rapide tutoriel présente le plugincompiler, l'un des principaux plugins de l'outil de construction Maven.
Pour un aperçu des autres plugins principaux, reportez-vous àthis article.
2. Objectifs du plugin
The compiler plugin is used to compile the source code of a Maven project. 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 plugincompiler dans le POM:
maven-compiler-plugin3.7.0
...
Nous pouvons trouver la dernière version de ce pluginhere.
3. Configuration
By default, the compiler plugin compiles source code compatible with Java 5, and the generated classes also work with Java 5 regardless of the JDK in use. Nous pouvons modifier ces paramètres dans l'élémentconfiguration:
1.81.8
<-- other customizations -->
Pour plus de commodité, nous pouvons définir la version Java en tant que propriétés du POM:
1.81.8
Parfois, nous voulons passer des arguments au compilateurjavac. C'est là que le paramètrecompilerArgs est utile.
Par exemple, nous pouvons spécifier la configuration suivante pour que le compilateur avertisse des opérations non contrôlé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:
Comme les deux objectifs du plugincompiler sont automatiquement liés à des phases du cycle de vie par défaut de Maven, nous pouvons exécuter ces objectifs avec les commandesmvn compile etmvn test-compile.
4. Mises à jour Java 9
4.1. Configuration
Jusqu'à Java 8, nous utilisions le numéro de version 1.x oùx 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:
99
De même, nous pouvons définir la version en utilisantproperties comme:
99
Maven a ajouté sa prise en charge de Java 9 dans3.5.0,, nous aurons donc besoin d'au moins cette version. Nous aurons également besoin d'au moins3.8.0 dethe maven-compiler-plugin:
Cependant, lorsque vous utilisez les paramètres par défaut de Java 9, nous obtenons 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.example.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.example.maven.java9.MavenCompilerPlugin
L'erreur vient du fait que ce package se trouve 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 la classea module-info.java et d'indiquer que nous avons besoin du modulejava.xml:
Dans cet article, nous avons passé en revue le plugincompiler et décrit comment l'utiliser. Nous avons également appris la prise en charge de Maven pour Java 9.
Le code source complet de ce didacticiel se trouve àover on GitHub.