J'essaie de créer un plugin Hudson que j'ai modifié et il nécessite jdk1.6. C'est bien, mais je ne vois pas comment je peux dire à maven où se trouvent les différents jdk. J'ai trouvé quelques mentions sur Internet mais elles ne semblent pas s'appliquer à moi. Certains suggèrent d'ajouter une configuration .m2/settings.xml
mais je n'ai pas de fichier settings.xml
. De plus, je ne veux pas utiliser 1.6 pour toutes les versions de maven.
Un problème est que j'utilise mvn
dans cygwin, si cela compte. Il semble que je devrais être capable de faire la spécification dans le fichier pom du projet, mais le pom existant est assez nu.
Donc, en fin de compte, existe-t-il un moyen de spécifier un jdk pour une seule invocation de maven?
set JAVA_HOME="C:\Java\jdk7"
JAVA_HOME
peut être défini pour Maven (sur Mac au moins) dans ce fichier:/private/etc/mavenrc
- Et cela peut utiliser quelque chose comme (notez les backticks pas des guillemets simples!):export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_75`
export JAVA_HOME='D:/dev/java/jdk8/jre'
(fonctionne pour moi)java -version
, il imprime toujours la version précédente.Il semble que maven donne maintenant une solution ici: Compilation de sources à l'aide d'un JDK différent
Disons que vos
JAVA_HOME
points sur JDK7 (qui exécutera les processus maven)Votre
pom.xml
pourrait être:Si vos développeurs ajoutent (et personnalisent) simplement les lignes suivantes dans leur
settings.xml
, votre pom sera indépendant de la plateforme:la source
-Dmaven.compiler.fork=true
et-Dmaven.compiler.executable=/path/to/target/javac
en ligne de commande.compile: compile a une propriété utilisateur qui vous permet de spécifier un chemin vers le
javac
.Notez que cette propriété utilisateur ne fonctionne que lorsque
fork
c'esttrue
qui estfalse
par défaut.Vous devrez peut-être double guillemet la valeur si elle contient des espaces.
Voir aussi Priorité des propriétés personnalisées Maven .
la source
JAVA_HOME
variable. Par exemple (en bash shell):JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable=/usr/lib/jvm/java-8-openjdk-amd64/bin/javac spring-boot:run
Comme vous l'avez dit: "De plus, je ne veux pas utiliser 1.6 pour toutes les versions de maven." .... Donc mieux je dirai de modifier votre fichier pom et de spécifier la version de jdk à utiliser.
Cela garantira que votre projet particulier utilise cette version de jdk.
la source
Je dis que vous configurez la
JAVA_HOME
variable d'environnement comme le dit Pascal: Dans Cygwin, si vous utilisez bash comme votre shell devrait être:Cela ne nuit jamais à ajouter également le
bin
chemin du répertoire java à laPATH
variable d'environnement avec:Ajoutez également
maven-enforce-plugin
pour vous assurer que le bon JDK est utilisé. C'est une bonne pratique pour votre pom.Veuillez consulter le plugin Maven Enforcer - Utilisation .
la source
Je sais que c'est un vieux fil. Mais j'avais des problèmes avec quelque chose de similaire dans la source du compilateur Maven pour Java 8. J'ai compris cela avec une solution rapide mentionnée dans cet article , je pensais pouvoir la mettre ici et peut-être aider les autres:
la source
Maven utilise la variable $ JAVACMD comme commande java finale, définissez-la à l'endroit où se trouve l'exécutable java pour basculer maven vers un JDK différent.
la source
Hudson vous permet également de définir plusieurs environnements d'exécution Java et d'appeler Maven avec l'un d'entre eux. Regardez de plus près sur la page de configuration.
la source
Si vous avez installé Java via
brew
enMac
alors les chances sont que vous trouverez votre Java Home Directory ici:La prochaine étape serait maintenant de trouver le
Java Home
répertoire vers lequel maven pointe. Pour le trouver, tapez la commande:mvn -version
Les domaines qui nous intéressent ici sont:
Java version
etruntime
.Maven pointe actuellement du doigt
Java 13
. En outre, vous pouvez voir le chemin d'accès Java Home sous l'exécution de la clé, qui est:/usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home
Pour changer la version Java du maven, nous devons ajouter le
Java 8
chemin d'accès personnel auJAVA_HOME
variable env.Pour ce faire, nous devons exécuter la commande:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
dans le terminal.Maintenant, si nous vérifions la version maven, nous pouvons voir qu'elle pointe maintenant vers Java 8.
Le problème avec ceci est que si vous vérifiez à nouveau la version de maven dans le nouveau terminal, vous constaterez qu'elle pointe vers le Java 13. Pour éviter cela, je suggère d'ajouter la
JAVA_HOME
variable dans le~/.profile
fichier.De cette façon, chaque fois que votre terminal se charge, il reprendra la valeur que vous avez définie dans JAVA_HOME par défaut. Voici la ligne que vous devez ajouter dans le
~/.profile
fichier:export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Vous pouvez ouvrir un nouveau terminal et vérifier la version de Maven, (
mvn -version
) et vous verrez qu'il pointe vers Java 8 cette fois.la source
J'ai eu un problème de construction avec maven dans Eclipse sous Windows 7.
Bien que j'aie observé que mvn build fonctionnait très bien à partir de la ligne de commande.
Eclipse considérait comme JVM par défaut une installation JRE au lieu de JDK, elle échouait donc lors de la compilation.
J'ai ajouté à eclipse.ini la ligne suivante:
Aussi lors du démarrage de eclipse, j'ai utilisé dans la section "Objectifs" la liste suivante:
Une erreur de compilation a été résolue.
la source
Pour Java 9:
la source
Une autre alternative pour gérer plusieurs versions de jdk est jEnv
Après l'installation, vous pouvez simplement changer la version java "localement" c'est-à-dire pour un répertoire de projet spécifique en:
Cela permettra également à mvn d'utiliser cette version localement, lorsque vous activez le plugin mvn:
la source
Vous pouvez également définir le JDK pour Maven dans un fichier de votre répertoire personnel
~/.mavenrc
:Cette variable d'environnement sera vérifiée par le script mvn et utilisée lorsqu'elle est présente:
https://github.com/CodeFX-org/mvn-java-9/tree/master/mavenrc
la source