web-dev-qa-db-fra.com

Maven construit avec le mauvais JDK sur Jenkins

Lorsque j'essaie d'exécuter mon travail Jenkins Maven, l'erreur suivante apparaît:

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project myProject: Fatal error compiling: invalid target release: 1.8 -> [Help 1]

Cela indique que Maven utilise Java 1.8 mais qu'il est supposé utiliser Java 1.7.

J'ai exécuté Maven en mode débogage et les bonnes versions étaient affichées:

...
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Maven home: /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven305
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /var/lib/jenkins/tools/hudson.model.JDK/JDK_7u71/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.8.0-44-generic", Arch: "AMD64", family: "unix"
...

Le serveur Jenkins fonctionne avec Java 1.8

...
$ Java -version
Java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
...
$ javac -version
javac 1.8.0_74
...

J'ai essayé d'exécuter le travail avec un dépôt Maven vide et de dire à Maven quelle version utiliser, mais sans succès.

J'appelle Maven comme ça:

mvn clean install -X -DskipTests -Dmaven.repo.local=../testrepo -Djava.version=1.7

Est-ce que je fais quelque chose de mal?

10
fa94

La solution appropriée consiste à ajouter le kit JDK requis à la configuration globale Jenkins, puis à choisir spécifiquement la version/l'installation requise du kit JDK dans la configuration de construction du projet.

Commencez par copier les JDK nécessaires sur votre machine de compilation. Ensuite, ouvrez la configuration Jenkins et allez à la section "JDK" [Jenkins -> Gérer Jenkins -> Configurer le système]. Ajoutez les JDK souhaités à Jenkins. L'image suivante est un exemple de Jenkins configuré avec deux JDKs.  JDK installations under Jenkins

Maintenant, dans la configuration du projet [VotreProjet -> Configurer], une nouvelle option sera disponible. Vous pouvez sélectionner le JDK pour construire le projet avec comme dans l'image:  enter image description here

"(Par défaut)" La machine virtuelle Java dans l'image fait référence au JDK sous lequel Jenkins s'exécute. La solution facile consisterait à remplacer le présent JDK par la version requise pour votre projet (en modifiant le script de démarrage Jenkins ou en utilisant Java_HOME). Cela fonctionnera. Cependant, une fois que vous avez besoin de créer deux ou plusieurs projets en conflit, vous devrez quand même configurer plusieurs JDK.

En utilisant des étapes similaires, vous pouvez ajouter plusieurs installations Maven sur votre serveur Jenkins.

12
Talijanac

À partir de Jenkins 2.60.1 (juin 2017) LTS, les emplois maven nécessitent JDK 1.8 ou plus. Seuls les travaux maven le nécessitent, tout le reste (par exemple, ceux de style libre) peut corriger la version de jdk qui correspond le mieux à leurs besoins.

Voir Changelog LTS :

2.60.1 est la première version de Jenkins LTS qui requiert Java 8 pour s'exécuter. Si vous utilisez le type de projet Maven, veuillez noter qu’il doit utiliser un JDK capable d’exécuter Jenkins, c’est-à-dire JDK version 8 ou supérieure. Si vous Configurez un ancien kit JDK dans un projet Maven, Jenkins tentera de Trouver un nouveau JDK et l’utilisera automatiquement.

Notes de compatibilité

Utilisation du type de projet Maven avec Java 7

Les utilisateurs dont les travaux sont configurés avec le type "Projet Maven" peuvent ne pas être En mesure d'utiliser Java 7 pour leurs travaux Maven. Le comportement correct n'est pas garanti. Vous devez donc procéder à vos risques et périls. Le projet Maven utilise Jenkins Remoting pour établir des "intercepteurs" dans l'exécutable Maven. Pour cette raison, Maven utilise Remoting et d'autres classes principales de Jenkins, Et ce comportement peut mettre à jour.

0
Pedro

Dans Jenkins 2.7.3 (et peut-être plus tard), la navigation dans les menus est légèrement différente:

1) Gérer Jenkins 

2) Configuration globale de l'outil

3) section JDK

4) appuyez sur le bouton "Installations JDK"

5) Les options JDK et les chemins sont là

0
joro

Essayez les étapes suivantes:

1) Allez à gérer Jenkins -> Configurer le système

2) Ajoutez Java_HOME et son chemin dans Propriétés globales -> Variables d’environnement

3) Ajouter JDK et chemin dans la section JDK

Sinon, essayez de suivre ce post car de nombreuses solutions sont proposées ici: Maven utilise une version Java incorrecte lorsqu’elle est exécutée par Jenkins

0
deeveeABC