Auf meinem Computer sind zwei Java-Versionen installiert: (1.6 und 1.7 manuell von mir installiert). Ich brauche beide für verschiedene Projekte. Aber für Maven brauche ich 1.7, jetzt verwendet mein Maven die Java-Version 1.6. Wie kann ich Maven auf 1.7 einstellen?
162
Antworten:
Maven verwendet den
JAVA_HOME
Parameter, um herauszufinden, welche Java-Version ausgeführt werden soll. Ich sehe aus Ihrem Kommentar, dass Sie das in der Konfiguration nicht ändern können.JAVA_HOME
Parameter unmittelbar vor dem Start von maven einstellen (und ihn gegebenenfalls später wieder ändern).mvn
(Nicht-Windows) /mvn.bat
/mvn.cmd
(Windows) gehen und dort Ihre Java-Version explizit festlegen.quelle
JAVA_HOME
in Ihrer lokalen Shell festlegen, ohne die Konfiguration Ihres Computers zu ändern (sobald Sie diese Shell schließen, ist die Änderung weg). Sie können es sogar für einen einzelnen Befehl ändern:JAVA_HOME=/path/to/jdk17/ mvn build
Im POM können Sie die Compilereigenschaften festlegen, z. B. für 1.8:
quelle
Hinzufügen einer Lösung für Benutzer mit mehreren installierten Java-Versionen
Wir haben eine große Codebasis, die größtenteils in Java ist. Der Großteil meiner Arbeit ist entweder in Java 1.7 oder 1.8 geschrieben. Da
JAVA_HOME
es statisch ist, habe ich in meinem Aliase Aliase erstellt,.bashrc
um Maven mit verschiedenen Werten auszuführen:Auf diese Weise kann ich Maven über die Befehlszeile auf meinem Entwicklungscomputer ausführen, unabhängig von der im Projekt verwendeten JDK-Version.
quelle
mvn2
undmvn3
definiert und die Benennung wird ein bisschen funky, wenn auch Java-Versionen ins Spiel kommen ...: Dalias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
vormvn
. mvn sieht den Wert von JAVA_HOME mit nicht&&
.Auf Fenstern
Wenn Sie Ihre
JAVA_HOME
Variable innerhalb der Systemvariablen nicht ändern möchten .Bearbeiten Sie Ihre
mvn.bat
Datei und fügen Sie eine Zeile wie diese hinzuDies kann nach der
@REM ==== START VALIDATION ====
Erwähnung durch @Jonathan erfolgenAuf Mac (& Linux?)
Wenn Sie Ihre
JAVA_HOME
Variable in Ihrem~/.bashrc
oder nicht ändern möchten~/.bash_profile
Sie können eine
~/.mavenrc
Datei erstellen und dieseJAVA_HOME
mit dem Tool java_home neu definierenGesundheitsüberprüfung
Sie können überprüfen, ob alles einwandfrei funktioniert, indem Sie die folgenden Befehle ausführen. Die JDK-Version sollte anders sein.
mvn -version
dann
java -version
quelle
Hinzufügen meiner zwei Cent und explizite Bereitstellung der Lösung.
Ich habe zwei JDKs auf meinem Windows-Computer installiert -
JDK 1.5
undJDK 1.6
.Meine Standardeinstellung (und auf Windows-Systemumgebungsvariable festgelegt)
JAVA_HOME
ist festgelegtJDK 1.5
.Ich habe jedoch ein Maven-Projekt, das ich erstellen muss (dh Etsy.com von JBehave Tutorial )
JDK 1.6
.Meine Lösung in diesem Szenario (die funktioniert hat!) Ist wie vorgeschlagen, um
@DanielBarbarian
sie einzurichtenmvn.bat
.Für einige, die mit der Batch-Datei von Windows nicht vertraut sind, habe ich einfach die
set JAVA_HOME=<path_to_other_jdk>
Zeile nach@REM ==== START VALIDATION ====
inmvn.bat
(dh%MAVEN_HOME%\bin\mvn.bat
) hinzugefügt :quelle
mvn.bat
wird in umbenanntmvn.cmd
.Ich habe erst kürzlich, nach sieben langen Jahren bei Maven, etwas über toolchains.xml gelernt. Maven hat es sogar dokumentiert und unterstützt es ab 2.0.9 - Toolchains-Dokumentation
Also habe ich meinem Ordner ~ / .m2 / eine Datei toolchain.xml mit folgendem Inhalt hinzugefügt:
Hier können Sie definieren, mit welchen verschiedenen JDKs Maven das Projekt erstellen kann, unabhängig davon, mit welchen JDK Maven ausgeführt wird. Ähnlich wie beim Definieren von JDK auf Projektebene in IDE.
quelle
Eine einfache Lösung für das Problem -
Auf dem Mac würde es ungefähr so aussehen -
PS: Ein Sonderfall, den ich gefunden habe, ist der oben angegebene Befehl, der bei 'Fisch'-Muscheln nicht funktioniert. Ich hatte auch Bash Shell zur Verfügung und es hat dort gut funktioniert. Verwenden Sie einfach den Befehl 'bash', um zur Bash-Shell zu wechseln.
quelle
Sie können das Kompilieren von Quellen mit verschiedenen JDKs mit konfigurieren
maven-compiler-plugin
.Geben Sie einfach den Pfad zu
javac
in<executable>
Tag an. ZB für Java11 sieht es so aus:quelle
Um Auswirkungen auf Ihr Projekt und Ihre Umgebungsvariablen zu vermeiden, können Sie das Maven Compiler Plugin nur für den POM des Projekts konfigurieren und die Java-Version für Quelle und Ziel angeben
quelle
Sie können Maven so einstellen, dass jede Java-Version gemäß den folgenden Anweisungen verwendet wird.
Installieren Sie JENV in Ihrer Maschine Link
Überprüfen Sie die verfügbaren Java-Versionen, die auf Ihrem Computer installiert sind, indem Sie den folgenden Befehl in der Befehlszeile eingeben.
Sie können die globale Java-Version mit dem folgenden Befehl angeben.
Sie können die lokale Java-Version für jedes Verzeichnis (Projekt) mit dem folgenden Befehl im Verzeichnis in der Befehlszeile angeben.
füge die richtige Java-Version in deine pom.xml ein
Wenn Sie Maven in der Befehlszeile ausführen, installieren Sie das Jenv Maven-Plugin mit dem folgenden Befehl
Jetzt können Sie jede Java-Version auf Ihrem Computer problemlos für jedes Projekt konfigurieren.
quelle
Auf Macs (vorausgesetzt, Sie haben die richtige Version installiert)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
quelle
Ohne Umgebungsvariablen zu ändern, können Sie die Java-Version basierend auf der Projektebene mithilfe des Maven Compiler Plugins verwalten.
Methode 1
Methode 2
quelle
Unter Windows füge ich dem Ordner Maven bin einfach mehrere Batchdateien für verschiedene JDK-Versionen hinzu:
mvn11.cmd
Anschließend können Sie
mvn11
Maven im angegebenen JDK ausführen.quelle
Unter Linux / Unix wird das JAVA_HOME im Shell-Skript 'mvn' durch die Einstellungen in überschrieben
Bitte wo man JAVA_HOME und MAVEN Pfadvariablen unter Linux hinzufügt
quelle
Ich hatte auf dem Mac keinen Erfolg,
JAVA_HOME
wenn ich nur die Konsole einstellte, aber ich war mit diesem Ansatz erfolgreich~/.mavenrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
quelle
Sie können auch zwei Versionen von maven installieren und eine davon bearbeiten . Bearbeiten Sie hier:
Ersetzen Sie Ihre% java_home% -Erscheinungen durch den gewünschten Java-Pfad. Führen Sie dann einfach maven von diesem geänderten Pfad aus
quelle