Как изменить Maven Java дома
Я хочу изменить Maven Java дома, который открыт JDK с Sun JDK. Как мне это сделать?
root@ak-EasyNote-TM98:~# mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre
Default locale: tr_TR, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-34-generic", arch: "amd64", family: "unix"
Edit:
Так жаль. Я забыл написать код ниже:
root@ak-EasyNote-TM98:~$ java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
Мой путь по умолчанию для Java - Sun JDK. Но Maven Java дома указал openjdk. Я хочу исправить это только для Maven.
8 ответов
Если вы работаете в Linux, установите JAVA_HOME, используя синтаксис export JAVA_HOME=<path-to-java>
, На самом деле это не только для Maven.
Я использую Mac, и ни один из ответов выше не помог мне. Я обнаружил, что maven загружает свой собственный JAVA_HOME по пути, указанному в: ~/.mavenrc
Я изменил содержимое файла, чтобы: JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
Для Linux это будет выглядеть примерно так:JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
Лучший способ заставить конкретную JVM для MAVEN - создать системный файл, загружаемый скриптом mvn.
Этот файл /etc/mavenrc
и он должен объявить JAVA_HOME
переменная окружения, указывающая на вашу конкретную JVM.
Пример:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
Если файл существует, он загружен.
Вот выдержка из mvn
сценарий, чтобы понять:
если [ -f /etc/mavenrc ]; затем, / И т.д. / mavenrc фи if [ -f "$HOME/.mavenrc" ]; затем, "$ HOME /.mavenrc" фи
Альтернативно, тот же контент может быть написан на ~/.mavenrc
Если вы имеете дело с несколькими проектами, которым требуются разные версии Java для сборки, нет необходимости устанавливать новый JAVA_HOME
значение переменной окружения для каждой сборки. Вместо этого выполните Maven как:
JAVA_HOME=/path/to/your/jdk mvn clean install
Он будет построен с использованием указанного JDK, но не изменит вашу переменную среды.
Демо:
$ mvn -v
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.6, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-72-generic", arch: "amd64", family: "unix"
$ JAVA_HOME=/opt/jdk1.8.0_201 mvn -v
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /opt/jdk1.8.0_201/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-72-generic", arch: "amd64", family: "unix"
$ export | grep JAVA_HOME
declare -x JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Выше отлично помогает, но если у вас такая же среда, как у меня, то вот как я заставлю ее работать.
- с несколькими работающими jdk, openjdk, oracle jdk и несколькими версиями.
- установить apache-maven через yum, пакет apache-maven-3.2.1-1.el6.noarch
Отредактируйте этот файл /etc/profile.d/apache-maven.sh, например, обратите внимание, что он повлияет на всю систему.
$ cat /etc/profile.d/apache-maven.sh
MAVEN_HOME=/usr/share/apache-maven
M2_HOME=$MAVEN_HOME
PATH=$MAVEN_HOME/bin:$PATH
# change below to the jdk you want mvn to reference.
JAVA_HOME=/usr/java/jdk1.7.0_40/
export MAVEN_HOME
export M2_HOME
export PATH
export JAVA_HOME
Даже если вы установите Oracle JDK, ваш $JAVA_HOME
переменная должна ссылаться на путь JRE, который находится внутри корня JDK. Вы можете обратиться к моему другому ответу на аналогичный вопрос для более подробной информации.
Представляется дубликатом https://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-and-jre-and-set-the-system-use-only-and-only-sun при условии, что вы используете Ubuntu.
Ключ должен использовать команду sudo update-java-alternatives -s java-6-sun
, Любые команды, которые полагаются на javac
будут затронуты и не только Maven.
У меня есть две версии Java на моем сервере Ubuntu 14.04: java 1.7
а также java 1.8
,
У меня есть проект, который мне нужно построить, используя java 1.8
,
Если я проверю свою версию Java, используя java -version
я получил
java version "1.8.0_144"
Но когда я сделал mvn -version
Я получил:
Java version: 1.7.0_79, vendor: Oracle Corporation
Чтобы установить версию mvn java8
Я сделаю это:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/
Потом когда я mvn -version
Я получил:
Java version: 1.8.0_144, vendor: Oracle Corporation