Как изменить 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

Просто установите свойство JAVA_HOME env.

Другие вопросы по тегам