Maven Compiler Plugin

Dieser Artikel ist Teil einer Reihe: • Maven Resources Plugin

• Maven Compiler Plugin (aktueller Artikel) • Kurzanleitung zum Maven Install Plugin

• Das Maven Failsafe Plugin

• Kurzanleitung zum Maven Surefire Plugin

• Das Maven Deploy Plugin

• Das Maven Clean Plugin

• Das Maven Verifier Plugin

• Das Maven Site Plugin

• Anleitung zu den Core Maven Plugins

1. Übersicht

In diesem kurzen Tutorial wird das Compiler- Plugin vorgestellt, eines der Kern-Plugins des Maven-Build-Tools.

Eine Übersicht über die anderen Core-Plugins finden Sie in diesem Artikel.

2. Plugin-Ziele

Das Compiler- Plugin wird verwendet, um den Quellcode eines Maven-Projekts zu kompilieren . Dieses Plugin hat zwei Ziele, die bereits an bestimmte Phasen des Standardlebenszyklus gebunden sind:

  • compile - Kompiliert die Hauptquelldateien
  • testCompile - Kompiliert Testquelldateien

Hier ist das Compiler- Plugin im POM:

 maven-compiler-plugin 3.7.0  ...  

Die neueste Version dieses Plugins finden Sie hier.

3. Konfiguration

Standardmäßig kompiliert das Compiler- Plugin Quellcode, der mit Java 5 kompatibel ist, und die generierten Klassen funktionieren auch mit Java 5, unabhängig vom verwendeten JDK. Wir können diese Einstellungen im Konfigurationselement ändern :

 1.8 1.8  

Der Einfachheit halber können wir die Java-Version als Eigenschaften des POM festlegen:

 1.8 1.8 

Manchmal möchten wir Argumente an den Javac- Compiler übergeben. Hier bietet sich der Parameter compilerArgs an.

Beispielsweise können wir die folgende Konfiguration angeben, damit der Compiler vor ungeprüften Vorgängen warnt:

   -Xlint:unchecked  

Beim Kompilieren dieser Klasse:

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

Auf der Konsole wird eine ungeprüfte Warnung angezeigt:

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

Da beide Ziele des Compiler- Plugins automatisch an Phasen im Maven-Standardlebenszyklus gebunden sind, können wir diese Ziele mit den Befehlen mvn compile und mvn test-compile ausführen .

4. Java 9-Updates

4.1. Aufbau

Bis Java 8 haben wir die Versionsnummer als 1 verwendet. X wobei x die Version von Java darstellt, wie 1.8 für Java 8.

Für Java 9 und höher können wir einfach die Versionsnummer direkt verwenden:

 9 9 

Ebenso können wir die Version mithilfe der folgenden Eigenschaften definieren :

 9 9 

Maven hat seine Unterstützung für Java 9 in 3.5.0 hinzugefügt, daher benötigen wir mindestens diese Version. Wir benötigen außerdem mindestens 3.8.0 des Maven-Compiler-Plugins :

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

4.2. Bauen

Jetzt ist es Zeit, unsere Konfiguration zu testen.

Zuerst erstellen wir eine MavenCompilerPlugin- Klasse, in der wir ein Paket aus einem anderen Modul importieren.

Eine einfache ist 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); } }

Als nächstes kompilieren wir es:

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

Bei Verwendung der Standardeinstellungen für Java 9 wird jedoch eine Fehlermeldung angezeigt:

[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

Der Fehler ist darauf zurückzuführen, dass sich dieses Paket in einem separaten Modul befindet, das wir noch nicht in unseren Build aufgenommen haben.

Die einfachste Möglichkeit, dies zu lösen, besteht darin, eine module-info.java- Klasse zu erstellen und anzugeben, dass das Modul java.xml erforderlich ist :

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

Jetzt können wir es erneut versuchen:

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

Und unser Output wird sein:

The XML namespace prefix is: xml

5. Schlussfolgerung

In diesem Artikel haben wir uns das Compiler- Plugin angesehen und dessen Verwendung beschrieben. Wir haben auch erfahren, wie Maven Java 9 unterstützt.

Den vollständigen Quellcode für dieses Tutorial finden Sie auf GitHub.

Weiter » Kurzanleitung zum Maven Install Plugin « Vorheriges Maven Resources Plugin