Beim Ausführen unseres Maven-Builds erhält ein Mitglied meines Teams beim Ausführen einen Fehler. Wenn wir jedoch java -version
von ihrer Befehlszeile aus ausführen , zeigt dies Java 1.6.0_26 an. Der Fehler scheint offensichtlich zu schreien, dass Maven Java 5 verwendet.
Wie kann ich herausfinden und ändern, welche Java-Version von Maven verwendet wird?
3 potenziell wichtige Hinweise:
- Dies wird in der Befehlszeile ausgeführt, ohne das Eclipse-Plugin zu verwenden
- JAVA_HOME ist auf ein Java 1.6 JDK eingestellt
- Verwenden von Maven 2.2.1
Antworten:
mvn -version
gibt aus, welches Java verwendet wird. Wenn JAVA_HOME auf ein gültiges JDK-Verzeichnis festgelegt ist und Maven etwas anderes verwendet, hat höchstwahrscheinlich jemand die Art und Weise, wie Maven gestartet wird, manipuliert.quelle
Sie müssen konfigurieren
maven-compiler-plugin
, um 1.6source
undtarget
Parameter zu verwenden (standardmäßig ist es 1.5).Dies geschieht am besten im übergeordneten
<pluginManagment>
Abschnitt Ihres Projekts im Abschnitt (aber Sie können es natürlich immer für einzelne Projekte konfigurieren).<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </pluginManagement> </build>
quelle
mvn -version
Hier erfahren Sie, welchen Compiler Maven verwendet. Dies beantwortet die Frage, es sei denn, Ihr POM gibt Überschreibungswerte für die zu verwendenden Versionen an.Hier ist der einfachste Weg, um die Überschreibungen in anzugeben
pom.xml
:<properties> <maven.compiler.target>1.9</maven.compiler.target> <maven.compiler.source>1.9</maven.compiler.source> </properties>
Alternativ
maven-compiler-plugin
kann das expliziter angegeben werden. Schauen Sie sich in diesem Fall die<source>
und<target>
die mit dem Plugin verknüpften Werte an.Beide Optionen werden hier beschrieben .
Wenn Ihr POM eine hat
<parent>
, müssen Sie dies ebenfalls überprüfen (rekursiv).Hinweis: Wenn
source
undtarget
angegeben werden, werden diese Werte als Befehlszeilenoptionen an den Compiler übergeben. Mit dieser Funktion können Sie frühere Java-Versionen als den Nennwert des Compilers kompilieren oder ausführen.quelle
javac
von Ihrem Pfad aus verwenden möchten :JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 mvn clean install
. Ihr Kilometerstand kann variieren, wie / wann dies unter Maven überschrieben werden kann.javac
/java
aus der Build - Umgebung durch die Build - Parameter Einstellung hinzufügen ,-version
um das Befehlszeilenargument - ähnlich wie hier (für Gradle).<java.version>
inpom.xml
ist dafür nicht relevant: Angabe der Java-Version in Maven - Unterschiede zwischen Eigenschaften und Compiler-PluginJAVA_HOME
dies möglicherweise bereits in Ihrer Umgebung festgelegt wurde und diePATH
Variable überschreibt .Schauen Sie hier: http://www.MacAdie.net/2011/07/10/adding-some-xml-to-netbeans-pom-files/
quelle