Este tutorial rápido apresenta o plug-incompiler, um dos plug-ins principais da ferramenta de construção Maven.
Para uma visão geral dos outros plug-ins principais, consultethis article.
2. Objetivos do plugin
The compiler plugin is used to compile the source code of a Maven project. Este plug-in tem dois objetivos, que já estão vinculados a fases específicas do ciclo de vida padrão:
compile– compila os principais arquivos fonte
testCompile– compila os arquivos fonte de teste
Aqui está o plugincompiler no POM:
maven-compiler-plugin3.7.0
...
Podemos encontrar a versão mais recente deste pluginhere.
3. Configuração
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. Podemos modificar essas configurações no elementoconfiguration:
1.81.8
<-- other customizations -->
Por conveniência, podemos definir a versão Java como propriedades do POM:
1.81.8
Às vezes, queremos passar argumentos para o compiladorjavac. É aqui que o parâmetrocompilerArgs é útil.
Por exemplo, podemos especificar a seguinte configuração para o compilador avisar sobre operações não verificadas:
-Xlint:unchecked
Ao compilar esta classe:
public class Data {
List textList = new ArrayList();
public void addText(String text) {
textList.add(text);
}
public List getTextList() {
return this.textList;
}
}
Como os dois objetivos do plugincompiler são automaticamente vinculados às fases do ciclo de vida padrão do Maven, podemos executar esses objetivos com os comandosmvn compileemvn test-compile.
4. Atualizações do Java 9
4.1. Configuração
Até o Java 8, usávamos o número da versão como 1.x, ondex representa a versão do Java, como 1.8 para o Java 8.
Para Java 9 e superior, podemos apenas usar o número da versão diretamente:
99
Da mesma forma, podemos definir a versão usandoproperties como:
99
Maven adicionou seu suporte para Java 9 em3.5.0,, portanto, precisaremos pelo menos dessa versão. Também precisaremos de pelo menos3.8.0 dethe maven-compiler-plugin:
Ao usar os padrões do Java 9, porém, obteremos um erro:
[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
O erro vem do fato de que este pacote está em um módulo separado que ainda não incluímos em nossa compilação.
A maneira mais simples de resolver isso é criando a classea module-info.java e indicando que precisamos do módulojava.xml: