it-roy-ru.com

Как изменить Maven Java дома

Я хочу изменить maven Java home, который является открытым jdk с Sun jdk. Как мне это сделать ?

[email protected]:~# 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:

Так жаль. Я забыл написать код ниже:

[email protected]:~$ 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 home указал на openjdk. Я хочу исправить это только для Maven.

48
RockOnGom

Если вы используете Linux, установите Java_HOME, используя синтаксис export Java_HOME=<path-to-Java>. На самом деле это не только для Maven.

44
Evgeniy Dorofeev

Я использую 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

23
Technotronic

Отличная помощь выше, но если у вас такая же среда, как и у меня, вот как я заставлю ее работать.

  • с несколькими работающими 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
4
Jasonw

Лучший способ заставить конкретную JVM для MAVEN - создать системный файл, загружаемый скриптом mvn.

Это файл /etc/mavenrc, и он должен объявлять переменную среды Java_HOME, указывающую на вашу конкретную JVM.

Пример: 

export Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-AMD64

Если файл существует, он загружен.

Вот выдержка из скрипта mvn для понимания:

 если [-f/etc/mavenrc]; затем
 , /etc/mavenrc
 фи 

 if [-f "$ HOME/.mavenrc"]; затем
 , "$ HOME/.mavenrc" 
 фи 

Альтернативно, тот же контент может быть записан в ~/.mavenrc

3
fxrobin

Даже если вы установите Oracle JDK, ваша переменная $Java_HOME должна указывать путь к JRE , который находится внутри корня JDK. Вы можете обратиться к мой другой ответ на аналогичный вопрос для более подробной информации.

3
Ivaylo Slavov

Представляется дубликатом https://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-and-jre-and-set-the-system-use-only-and-only- Sun # answer-21137 при условии, что вы используете Ubuntu. 

Ключ должен использовать команду Sudo update-Java-alternatives -s Java-6-Sun. Будут затронуты все команды, которые полагаются на javac, а не только Maven.

2
Drew

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

2
Piotr Gwiazda

У меня есть две версии 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
0
Mubashar Abbas