Astuce du jour pour que votre projet maven considère les warnings comme des erreurs.
Extrait du pom.xml
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> <failOnWarning>true</failOnWarning> <showWarnings>true</showWarnings> <compilerArgs> <arg>-Xlint:unchecked</arg> <arg>-Xlint:rawtypes</arg> </compilerArgs> </configuration> </plugin> </plugins> </build>
Dans l’exemple ci-dessus, nous demandons au compilateur de générer des warnings unchecked et rawtypes. Si l’un deux est détecté, la compilation échouera.
Exemple
List a = new LinkedList();
Le code ci-dessus est correct. Cependant le warning rawtypes est levé. Maven échouera lors de la phase de compilation.
------------------------------------------------------------- COMPILATION WARNING : ------------------------------------------------------------- Main.java:[14,9] found raw type: java.util.List missing type arguments for generic class java.util.List<E> Main.java:[14,22] found raw type: java.util.LinkedList missing type arguments for generic class java.util.LinkedList<E> 2 warnings ------------------------------------------------------------- ------------------------------------------------------------- COMPILATION ERROR : ------------------------------------------------------------- Main.java: warnings found and -Werror specified 1 error ------------------------------------------------------------- ------------------------------------------------------------------------ BUILD FAILURE ------------------------------------------------------------------------
Lien Javadoc vers les différents warnings possibles : https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BHCJCABJ
Hmm … techniquement si on regarde la doc du compilateur Java (https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html), on peut pratiquement activer tous les lints Java, à part peut-être les lints de déprécion (dépend de si on veut suivre les évolutions du langage/des libs).