Maven Compiler-plug-in

Dit artikel maakt deel uit van een reeks: • Maven Resources Plugin

• Maven Compiler-plug-in (huidig ​​artikel) • Beknopte handleiding voor de Maven-installatieplug-in

• De Maven Failsafe-plug-in

• Beknopte handleiding voor de Maven Surefire-plug-in

• De Maven Deploy-plug-in

• De Maven Clean-plug-in

• De Maven Verifier-plug-in

• De Maven Site-plug-in

• Gids voor de Core Maven-plug-ins

1. Overzicht

Deze korte tutorial introduceert de compiler plug-in, een van de belangrijkste plug-ins van de Maven-buildtool.

Raadpleeg dit artikel voor een overzicht van de andere kernplug-ins.

2. Plug-in doelen

De compiler plug-in wordt gebruikt om de broncode van een Maven-project te compileren. Deze plug-in heeft twee doelen, die al gebonden zijn aan specifieke fasen van de standaard levenscyclus:

  • compileren compileer de belangrijkste bronbestanden
  • testCompile compileer testbronbestanden

Hier is de compiler plug-in in de POM:

 maven-compiler-plugin 3.7.0 ... 

We kunnen de laatste versie van deze plug-in hier vinden.

3. Configuratie

Standaard is het compiler plugin compileert broncode die compatibel is met Java 5, en de gegenereerde klassen werken ook met Java 5, ongeacht de JDK die wordt gebruikt. We kunnen deze instellingen wijzigen in het configuratie element:

 1.8 1.8  

Voor het gemak kunnen we de Java-versie instellen als eigenschappen van de POM:

 1.8 1.8 

Soms willen we argumenten doorgeven aan de Javac compiler. Dit is waar de compilerArgs parameter is handig.

We kunnen bijvoorbeeld de volgende configuratie specificeren voor de compiler om te waarschuwen voor niet-gecontroleerde bewerkingen:

   -Xlint: niet aangevinkt 

Bij het samenstellen van deze klasse:

openbare klasse Data {Lijst textList = nieuwe ArrayList (); openbare ongeldige addText (String-tekst) {textList.add (tekst); } openbare lijst getTextList () {retourneer this.textList; }}

we zien een niet-aangevinkte waarschuwing op de console:

[WAARSCHUWING] ... Data.java:[7,29] niet-aangevinkte conversie vereist: java.util.List gevonden: java.util.ArrayList

Omdat beide doelen van de compiler plug-in zijn automatisch gebonden aan fasen in de standaardlevenscyclus van Maven, we kunnen deze doelen uitvoeren met de opdrachten mvn compileren en mvn test-compileren.

4. Java 9-updates

4.1. Configuratie

Tot Java 8 gebruikten we het versienummer als 1.X waar X staat voor Java's versie, zoals 1.8 voor Java 8.

Voor Java 9 en hoger kunnen we het versienummer gewoon rechtstreeks gebruiken:

 9 9 

Evenzo kunnen we de versie definiëren met eigendommen net zo:

 9 9 

Maven heeft zijn ondersteuning voor Java 9 toegevoegd in 3.5.0, dus we hebben tenminste die versie nodig. We hebben ook minimaal nodig 3.8.0 van de maven-compiler-plugin:

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

4.2. Bouwen

Nu is het tijd om onze configuratie te testen.

Laten we eerst een MavenCompilerPlugin klasse waarin we een pakket importeren uit een andere module.

Een simpele is javax.xml.XMLConstants.XML_NS_PREFIX:

openbare klasse MavenCompilerPlugin {openbare statische leegte hoofd (String [] args) {System.out.println ("Het XML-naamruimtevoorvoegsel is:" + XML_NS_PREFIX); }}

Laten we het vervolgens compileren:

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

Als we echter de standaardinstellingen van Java 9 gebruiken, krijgen we een foutmelding:

[FOUT] COMPILATIEFOUT: [FOUT] ... / MavenCompilerPlugin.java:[3,20] pakket javax.xml is niet zichtbaar (pakket javax.xml is gedeclareerd in module java.xml, maar module com.baeldung.maven. java9 leest het niet) [ERROR] ... / MavenCompilerPlugin.java:[3,1] statische import alleen uit klassen en interfaces [ERROR] ... / MavenCompilerPlugin.java:[7,62] kan symboolsymbool niet vinden: variabele XML_NS_PREFIX locatie: klasse com.baeldung.maven.java9.MavenCompilerPlugin

De fout komt van het feit dat dit pakket zich in een aparte module bevindt die we nog niet in onze build hebben opgenomen.

De eenvoudigste manier om dit op te lossen, is door te creëren een module-info.java class en aangeven dat we de java.xml module:

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

Nu kunnen we het opnieuw proberen:

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

En onze output zal zijn:

Het voorvoegsel van de XML-naamruimte is: xml

5. Conclusie

In dit artikel hebben we het compiler plug-in en beschreven hoe u deze kunt gebruiken. We leerden ook over de ondersteuning van Maven voor Java 9.

De volledige broncode voor deze tutorial is te vinden op GitHub.

De volgende » Beknopte handleiding voor de Maven-installatieplug-in « Vorige Maven Resources-plug-in