Spécifiez JDK pour Maven à utiliser

J’essaie de construire un plugin Hudson que j’ai modifié et qui 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é peu de mentions sur internet mais elles ne semblent pas s’appliquer à moi. Certains suggèrent d’append une configuration à .m2/settings.xml mais je n’ai pas de settings.xml . De plus, je ne veux pas utiliser 1.6 pour toutes les versions maven.

Un mvn , c’est que mvn in cygwin, si c’est important. Il semble que je devrais pouvoir faire la spécification dans le fichier projet pom, mais le pom existant est assez nu.

Donc, en fin de compte, existe-t-il un moyen de spécifier un jdk pour un seul appel de maven?

Donc, en fin de compte, existe-t-il un moyen de spécifier un jdk pour un seul appel de maven?

JAVA_HOME temporairement votre JAVA_HOME .

Semble que maven donne maintenant une solution ici: Comstackr des sources en utilisant un JDK différent

Disons que votre JAVA_HOME pointe vers JDK7 (qui exécutera les processus Maven)

Votre pom.xml pourrait être:

     org.apache.maven.plugins maven-comstackr-plugin  1.6 1.6      org.apache.maven.plugins maven-comstackr-plugin 3.1  true true ${JAVA_1_6_HOME}/bin/javac 1.3     

Si vos développeurs ajoutent (et personnalisent) les lignes suivantes dans leurs settings.xml , votre pom sera indépendant de la plate-forme:

  [...]  [...]  comstackr  C:\Program Files\Java\j2sdk1.4.2_09 C:\Program Files\Java\j2sdk1.6.0_18    [...]  comstackr   

Comme vous avez dit “Plus, je ne veux pas utiliser 1.6 pour tous les builds de Maven.” …. Donc, je dirais mieux modifier votre fichier pom et spécifier la version de jdk à utiliser.

    org.apache.maven.plugins maven-comstackr-plugin 3.7.0  1.9 1.9     

Cela garantira que votre projet particulier utilise cette version de jdk.

comstack: comstack a une propriété user qui vous permet de spécifier un chemin vers le javac .

Notez que cette propriété utilisateur ne fonctionne que lorsque fork est true ce qui est false par défaut.

 $ mvn -Dmaven.comstackr.fork=true -Dmaven.comstackr.executable=/path/to/the/javac comstack 

Vous pourriez avoir à doubler la valeur si elle contient des espaces.

 > mvn -Dmaven.comstackr.fork=true -Dmaven.comstackr.executable="C:\...\javac" comstack 

Voir aussi Priorité des propriétés personnalisées Maven .

Je dis que vous configurez JAVA_HOME comme Pascal le dit: En cygwin si vous utilisez bash comme votre shell devrait être “export JAVA_HOME = / cygdrive / c / pathtothejdk” Et cela ne nuit jamais à exporter le répertoire java bin vers PATH avec “export PATH = $ {JAVA_HOME} / bin: $ {PATH} ”

et ajoutez également maven-enforce-plugin pour vous assurer que le bon jdk est utilisé. C’est une bonne pratique pour votre pom.

    org.apache.maven.plugins maven-enforcer-plugin   enforce-versions  enforce     1.6         

http://maven.apache.org/plugins/maven-enforcer-plugin/usage.html

Je sais que c’est un vieux fil. Mais j’avais des problèmes avec quelque chose de similaire à celui de la source du compilateur Maven for Java 8. J’ai pensé que ceci avec une solution rapide mentionnée dans cet article pensait que je pouvais le mettre ici et peut-être aider les autres:

  UTF-8 1.8 1.8  

Maven utilise la variable $ JAVACMD en tant que commande java finale, définissez-la sur la position où l’exécutable Java va basculer vers un autre JDK.

Hudson vous permet également de définir plusieurs runtimes Java, et vous permet d’appeler Maven avec l’un d’eux. Regardez de plus près la page de configuration.

Pour Java 9:

    maven-comstackr-plugin 3.7.0  9 9     

J’ai eu un problème de construction avec maven dans Eclipse sous Windows 7.

Bien que j’aie observé la construction de mvn fonctionnait très bien à partir de la ligne de commande.

 mvn -T 5 -B -e -X -U -P test clean install -Dmaven.surefire.debug --settings ..\..\infra-scripts\maven-conf\settings.xml > output.log 

Eclipse considérait JVM par défaut comme une installation JRE à la place de JDK, ce qui échouait lors de la compilation.

J’ai ajouté à la ligne suivante eclipse.ini:

 -vm C:\Program Files (x86)\Java\jdk1.8.0_25\bin 

Aussi, à partir de eclipse, j’ai utilisé dans la section “Objectifs” la liste suivante:

 -T 5 -B -e -X -U -P test clean install -Dmaven.surefire.debug --settings ..\..\infra-scripts\maven-conf\settings.xml 

L’erreur de compilation a été résolue.