Comment changer la version Java utilisée par Maven sur Mac OS X

Ou comment passer sous Java 8

Je vous propose une traduction de cet article de Tom Pawlak qui m’a permis de passer un de mes projets sous Java 8 sur Mac OS X. J’étais capable de lancer un build Maven depuis mon IDE préféré, mais pas depuis la ligne de commande dans mon shell favori. L’article parle de passer sous Java 7, mais la manipulation est la même à un chiffre près. Je vous laisse deviner lequel.

Traduction

Récemment, j’ai installé Maven 3.2.1 sur Mac OS X, et j’ai découvert que Maven n’utilisait pas ma version par défaut de Java (définie comme étant la 1.7). Au lieu de ça, il utilisait la version 1.6.

La commande java -version donnait le résultat suivant :

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

L’équivalent Maven, à savoir mvn --version, donnait le résultat suivant :

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T17:37:52+00:00)
Maven home: /usr/local/apache-maven-3.2.1
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.9.3", arch: "x86_64", family: "mac"

Après un rapide coup d’oeil à la commande de lancement de Maven ($M2_HOME/bin/mvn) , vous pourrez constater que Maven lit au démarrage les deux fichiers /etc/mavenrc et ~/.mavenrc. Tout ce que j’avais à faire était de créer un de ces deux fichiers (j’ai choisi /etc/mavenrc pour appliquer la configuration à tous les utilisateurs du système) et assigner le chemin du home de Java 1.7 à la variable d’environnement JAVA_HOME.

Mac OS X dispose de la commande /usr/libexec/java_home qui retourne un chemin utilisable pour configurer la variable d’environnement JAVA_HOME.

Au final, mon fichier contenait la ligne suivante :

JAVA_HOME=`/usr/libexec/java_home`

Après ce changement, Maven utilise la bonne version de Java. La commande mvn --version indique désormais :

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T17:37:52+00:00)
Maven home: /usr/local/apache-maven-3.2.1
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.3", arch: "x86_64", family: "mac"

Bibliographie

L’article original de Tom Pawlak

La release note de Maven 3.2.1

La commande java_home de Mac OSX

Photo de Rémi Doolaeghe

Rémi Doolaeghe est un développeur freelance Java partisan du manifeste agile et de l'artisanat logiciel. Il a développé son expérience pendant 5 années au service d'éditeurs de logiciels de la métropole lilloise avant de devenir développeur indépendant. L'agilité et la collaboration sont ses moteurs dans un univers où l'expertise technique à elle seule n'est qu'un premier pas vers l'excellence.

Partagez cet article :