84 votes

Comment changer le home de maven java

Je veux changer le maven java home qui est open jdk avec sun jdk. Comment faire ?

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:

Je suis vraiment désolée. J'ai oublié d'écrire le code ci-dessous :

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)

Le chemin par défaut de mon home java est déjà sun jdk. Mais maven java home a pointé openjdk. Je veux corriger cela uniquement pour maven.

71voto

Evgeniy Dorofeev Points 52031

Si vous êtes sous Linux, définissez JAVA_HOME en utilisant la syntaxe suivante export JAVA_HOME=<path-to-java> . En fait, ce n'est pas seulement pour Maven.

49voto

Technotronic Points 148

Je suis en utilisant le Mac et aucune des réponses ci-dessus ne m'a aidé. J'ai découvert que maven chargeait son propre JAVA_HOME à partir du chemin spécifié dans : ~/.mavenrc

J'ai modifié le contenu du fichier comme suit : JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

Para Linux il ressemblera à quelque chose comme :
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre

15voto

fxrobin Points 396

La meilleure façon de forcer une JVM spécifique pour MAVEN est de créer un fichier système chargé par le script mvn script.

Ce fichier est /etc/mavenrc et il doit déclarer un JAVA_HOME qui pointe vers votre JVM spécifique.

Exemple :

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

Si le fichier existe, il est chargé.

Voici un extrait de la mvn script afin de comprendre :

  if \[ -f /etc/mavenrc \] ; then
    . /etc/mavenrc
  fi

  if \[ -f "$HOME/.mavenrc" \] ; then
    . "$HOME/.mavenrc"
  fi

Le même contenu peut également être rédigé en ~/.mavenrc

11voto

Jasper de Vries Points 3043

Si vous avez affaire à plusieurs projets nécessitant différentes versions de Java pour être construits, il n'est pas nécessaire de définir un nouveau fichier JAVA_HOME pour chaque version. Au lieu de cela, exécutez Maven comme suit :

JAVA_HOME=/path/to/your/jdk mvn clean install

Il utilisera le JDK spécifié, mais ne modifiera pas votre variable d'environnement.

Démonstration :

$ 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"

5voto

Jasonw Points 3633

Si vous avez un environnement similaire au mien, voici comment je l'ai fait fonctionner.

  • avoir plusieurs jdk en cours d'exécution, openjdk, oracle jdk et quelques versions.
  • installer apache-maven via yum, le paquetage est apache-maven-3.2.1-1.el6.noarch

Editez ce fichier /etc/profile.d/apache-maven.sh, comme suit, notez que cela affectera tout le système.

$ 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X