Sur ma machine, j'ai deux versions java installées: (1.6 et 1.7 installés manuellement par moi). J'ai besoin des deux pour différents projets. Mais pour Maven, j'ai besoin de 1.7, maintenant mon Maven utilise la version 1.6 java, comment puis-je configurer Maven pour utiliser 1.7?
166
Réponses:
Maven utilise le
JAVA_HOME
paramètre pour trouver la version Java qu'il est censé exécuter. Je vois de votre commentaire que vous ne pouvez pas changer cela dans la configuration.JAVA_HOME
paramètre juste avant de démarrer maven (et le modifier ultérieurement si nécessaire).mvn
(non-windows) /mvn.bat
/mvn.cmd
(windows) et y définir explicitement votre version java.la source
JAVA_HOME
dans votre shell local sans changer du tout la configuration de votre machine (dès que vous fermez ce shell, le changement est parti). Vous pouvez même le changer pour une seule commande:JAVA_HOME=/path/to/jdk17/ mvn build
Dans le POM, vous pouvez définir les propriétés du compilateur, par exemple pour 1.8:
la source
Ajout d'une solution pour les personnes avec plusieurs versions de Java installées
Nous avons une grande base de code, dont la plupart est en Java. La majorité de ce sur quoi je travaille est écrite en Java 1.7 ou 1.8. Puisque
JAVA_HOME
c'est statique, j'ai créé des alias dans mon.bashrc
pour exécuter Maven avec des valeurs différentes:Cela me permet d'exécuter Maven à partir de la ligne de commande sur ma machine de développement, quelle que soit la version JDK utilisée sur le projet.
la source
mvn2
etmvn3
défini et la dénomination devient un peu géniale lorsque les versions Java entrent également en jeu ...: Dalias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
avantmvn
. mvn ne voit pas la valeur de JAVA_HOME avec&&
.Sur windows
Si vous ne souhaitez pas modifier votre
JAVA_HOME
variable dans les variables système.Modifiez votre
mvn.bat
fichier et ajoutez une ligne comme celle-ciCela peut être fait après
@REM ==== START VALIDATION ====
comme mentionné par @JonathanSur Mac (et Linux?)
Si vous ne souhaitez pas modifier votre
JAVA_HOME
variable dans votre~/.bashrc
ou~/.bash_profile
vous pouvez créer un
~/.mavenrc
fichier et le redéfinirJAVA_HOME
à l'aide de l' outil java_homeVerification sanitaire
Vous pouvez vérifier que tout fonctionne correctement en exécutant les commandes suivantes. La version jdk doit être différente.
mvn -version
puis
java -version
la source
Ajoutant mes deux cents et fournissant explicitement la solution.
J'ai deux JDK installés sur ma machine Windows -
JDK 1.5
etJDK 1.6
.Ma valeur par défaut (et définie sur la variable d'environnement système Windows)
JAVA_HOME
est définie surJDK 1.5
.Cependant, j'ai un projet maven que je dois construire (c'est-à-dire, Etsy.com de JBehave Tutorial ) en utilisant
JDK 1.6
.Ma solution dans ce scénario (qui a fonctionné!), Est comme suggéré par
@DanielBarbarian
pour l'installermvn.bat
.Pour certains qui ne sont pas familiers avec le fichier batch de window, j'ai simplement ajouté la
set JAVA_HOME=<path_to_other_jdk>
ligne après@REM ==== START VALIDATION ====
inmvn.bat
(ie,%MAVEN_HOME%\bin\mvn.bat
):la source
mvn.bat
est renommé enmvn.cmd
.Récemment, après sept longues années chez Maven, j'ai découvert toolchains.xml. Maven l'a même documenté et le prend en charge à partir de la version 2.0.9 - Documentation de la chaîne d'outils
J'ai donc ajouté un fichier toolchain.xml à mon dossier ~ / .m2 / avec le contenu suivant:
Il vous permet de définir les différents JDK que Maven peut utiliser pour créer le projet, quel que soit le JDK avec lequel Maven s'exécute. Un peu comme lorsque vous définissez JDK au niveau du projet dans l'EDI.
la source
Une solution simple au problème -
Sur Mac, cela ressemblerait à quelque chose comme -
PS: Un cas particulier que j'ai trouvé est que la commande ci-dessus ne fonctionne pas sur la coquille de «poisson». J'avais aussi un shell bash disponible et cela fonctionnait bien là-bas. utilisez simplement la commande 'bash' pour passer au shell bash.
la source
Vous pouvez configurer des sources de compilation en utilisant différents JDK avec
maven-compiler-plugin
.Spécifiez simplement le chemin vers
javac
dans la<executable>
balise. Par exemple, pour java11, cela ressemble à:la source
Sans modifier les variables d'environnement, vous pouvez gérer la version java en fonction du niveau du projet à l'aide du plug-in Maven Compiler.
Méthode 1
Méthode 2
la source
Pour éviter tout impact sur votre projet et vos variables d'environnement, vous pouvez configurer le plugin Maven Compiler uniquement sur le POM du projet, en spécifiant la version java source et cible
la source
Vous pouvez configurer Maven pour utiliser n'importe quelle version Java en suivant les instructions ci-dessous.
Installez jenv dans votre lien machine
Vérifiez les versions java disponibles installées sur votre machine en exécutant la commande suivante en ligne de commande.
Vous pouvez spécifier la version globale de Java à l'aide de la commande suivante.
Vous pouvez spécifier la version Java locale pour n'importe quel répertoire (Projet) à l'aide de la commande suivante dans le répertoire en ligne de commande.
ajoutez la bonne version Java dans votre pom.xml
si vous exécutez maven en ligne de commande, installez le plugin jenv maven en utilisant la commande ci-dessous
Vous pouvez maintenant configurer n'importe quelle version Java de votre machine sur n'importe quel projet sans aucun problème.
la source
Sur Mac, (en supposant que vous ayez la bonne version installée)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
la source
Sous Windows, j'ajoute simplement plusieurs fichiers de commandes pour différentes versions de JDK au dossier bin Maven comme ceci:
mvn11.cmd
alors vous pouvez utiliser
mvn11
pour exécuter Maven dans le JDK spécifié.la source
Sous Linux / Unix, le JAVA_HOME dans le script shell 'mvn' est remplacé par les paramètres dans
s'il vous plaît Où ajouter les variables de chemin JAVA_HOME et MAVEN sous linux
la source
Je n'ai pas eu de succès sur mac avec juste un réglage
JAVA_HOME
dans la console mais j'ai réussi avec cette approche~/.mavenrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
la source
Vous pouvez également installer deux versions de maven et modifier l' une d'entre elles, en modifiant ici:
en remplaçant vos apparences% java_home% par le chemin java souhaité. Ensuite, exécutez simplement maven à partir de ce chemin modifié
la source