Als ich nach langer Zeit versuchte, mvn zu verwenden, war ich süchtig nach der Angabe von JAVA_HOME, also machte ich ein Memorandum.
Nach dem Update auf High Sierra wurden die Abhängigkeiten des Java-Projekts, das ich bei der Arbeit verwende, zurückgesetzt, sodass ich mvn vorerst für sauber hielt.
$ mvn clean
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Anscheinend ist die Umgebungsvariable JAVA_HOME schlecht. Wie hast du es eingestellt?
$ cat ~/.bash_profile
...
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
Da es mit dem vollständigen Pfad angegeben wird, ändert es sich schnell in eine bedeutungslose Umgebungsvariable, sobald die JDK-Version aktualisiert wird. Vielmehr war es bis jetzt oft sicher.
Anscheinend folgt Ihnen diese Notation automatisch, selbst wenn Sie das JDK aktualisieren. Speichern Sie es mit diesem Pfad ...
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
$ mvn -v
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T16:58:13+09:00)
Maven home: /usr/local/Cellar/maven/3.5.2/libexec
Java version: 1.8.0_172, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac"
Die Einstellung ist erfolgreich abgeschlossen. Früher habe ich kopiert und eingefügt, aber ich bin süchtig danach, wenn ich nicht auf Umgebungsvariablen achte.