如何更改maven java home

Roc*_*Gom 58 java openjdk maven

我想改变使用sun jdk打开jdk的maven java home.我该怎么做 ?

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:
Run Code Online (Sandbox Code Playgroud)

非常抱歉.我忘了写下面的代码:

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)
Run Code Online (Sandbox Code Playgroud)

我的java home默认路径已经是sun jdk了.但maven java home指向openjdk.我想只为maven修复它.

Evg*_*eev 51

如果您使用的是Linux,请使用语法设置JAVA_HOME export JAVA_HOME=<path-to-java>.实际上它不仅仅适用于Maven.

  • 对于那些不知道oracle-java安装在哪里的人,你可以通过首先运行`which java`来找到它,它会告诉你调用哪个二进制java.在我的例子中,它是`/ usr/bin/java`.此时你可以运行`readlink -f/usr/bin/java`,这对我来说产生了`/ usr/lib/jvm/java-7-oracle/jre/bin/java`ergo`export JAVA_HOME =/usr/LIB/JVM/JAVA -7- ORACLE/JRE /` (24认同)

Tec*_*nic 27

我正在使用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

  • 我希望我能投票 1000 次。浪费了太多时间尝试这个才找到这个解决方案。谢谢你! (3认同)
  • 也适用于Linux; 它看起来像`JAVA_HOME =/usr/lib/jvm/java-8-oracle/jre`. (2认同)

小智 11

为 MAVEN 强制使用特定 JVM 的最佳方法是创建一个由 mvn 脚本加载的系统范围的文件。

该文件是/etc/mavenrc并且它必须声明一个JAVA_HOME指向您的特定 JVM的环境变量。

例子:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

如果文件存在,则加载它。

这是mvn脚本的摘录,以便理解:

  如果 [ -f /etc/mavenrc ] ; 然后
    . /etc/mavenrc
  菲

  if [ -f "$HOME/.mavenrc" ] ; 然后
    . “$HOME/.mavenrc”
  菲

或者,可以写入相同的内容 ~/.mavenrc


Jas*_*ies 8

如果您正在处理需要构建不同 Java 版本的多个项目,则无需JAVA_HOME为每个构建设置新的环境变量值。而是像这样执行 Maven:

JAVA_HOME=/path/to/your/jdk mvn clean install
Run Code Online (Sandbox Code Playgroud)

它将使用指定的 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"
Run Code Online (Sandbox Code Playgroud)


Jas*_*onw 5

上面有很大的帮助,但如果你有像我一样的类似环境,这就是我让它工作的方式。

  • 有几个jdk正在运行,openjdk,oracle jdk和几个版本。
  • 通过yum安装apache-maven,包是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
Run Code Online (Sandbox Code Playgroud)