2016-04-14 11 views
7

Wenn ich versuche, meinen Jenkins Maven Job, den ich die folgende Fehlermeldung auszuführen:Maven bauen mit falscher JDK auf jenkins

[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] 

Dies zeigt, dass Maven verwendet Java 1.8, aber es soll Java 1.7 verwenden.

Ich lief Maven im Debug-Modus und es angezeigt, die richtigen Versionen:

... 
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" 
... 

Der Jenkins-Server läuft mit 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 
... 

ich den Job mit einem leeren Maven Repo versucht laufen und sagen, Maven genau welche Version zu verwenden, aber ohne Erfolg.

Ich nenne Maven wie folgt aus:

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

Bin ich etwas falsch?

+1

Haben Sie versucht, Java 1.7 für das Compiler-Plugin explizit in unserer POM-Datei anzugeben? – CptBartender

+0

@CptBartender Nein, ich werde es versuchen. – fa94

+0

@CptBartender Immer noch der gleiche Fehler. – fa94

Antwort

-1

Ich habe endlich herausgefunden, was das Problem war.

Ich benutze ein anderes Modul in meinem Build, das ich von einem Nexus-Server herunterladen. Jemand hat einen Fehler gemacht und eine Version auf den Nexus hochgeladen, die nicht mit der unter Versionskontrolle übereinstimmt. Die Version auf Nexus hat Java 1.8 angegeben, aber die unter Versionskontrolle hat Java 1.7, also habe ich es vorher nicht bemerkt.

Vielen Dank für die tollen Antworten.

0

Versuchen Sie, die folgenden Schritte aus:

1) Zum Jenkins Manage -> Configure System

2) Fügen Sie JAVA_HOME und den Pfad in Global Properties -> Umgebungsvariablen

3) In JDK und Pfad in JDK Abschnitt

Wenn nicht, versuchen Sie im Anschluss an diese Stelle als viele Lösungen hier angeboten werden: Maven uses an incorrect Java version when it is executed by Jenkins

+0

habe ich schon die in der anderen Frage genannten Lösungen ausprobiert aber nichts hat funktioniert. Außerdem kann ich globale Variablen nicht ändern, da der Jenkins-Server auch von anderen Projekten verwendet wird, die andere Java-Versionen benötigen. – fa94

7

Die richtige Lösung besteht darin, das benötigte JDK zu Jenkins globaler Konfiguration hinzuzufügen und dann die benötigte JDK-Version/Installation unter der Projektaufbau-Konfiguration spezifisch auszuwählen.

Beginnen Sie mit dem Kopieren der benötigten JDKs auf Ihren Build-Rechner. Öffnen Sie dann die Jenkins-Konfiguration und scrollen Sie zum Abschnitt "JDK" [Jenkins -> Jenkins verwalten -> System konfigurieren]. Fügen Sie Jenkins die gewünschten JDKs hinzu. Das folgende Bild zeigt ein Beispiel für Jenkins, die mit zwei verschiedenen JDKs konfiguriert wurden. JDK installations under Jenkins

Jetzt unter Projektkonfiguration [YourProject -> Configure] ist eine neue Option verfügbar. Sie können das gewünschte JDK auswählen, um ein Projekt wie im Bild zu erstellen:

"(Standard)" JVM in Bild bezieht sich auf das JDK, unter dem Jenkins läuft. Eine einfache Lösung wäre, dieses JDK in die Version zu ändern, die für Ihr Projekt benötigt wird (entweder durch Änderung des Jenkins-Startskript oder durch Verwendung von JAVA_HOME). Das wird funktionieren. Wenn Sie jedoch zwei oder mehrere widersprüchliche Projekte erstellen müssen, müssen Sie trotzdem mehrere JDKs konfigurieren.

Mit ähnlichen Schritten können Sie Ihrem Jenkins-Server mehrere Maven-Installationen hinzufügen.

+1

Vergessen Sie nicht, Quell-/Zielversionswerte zur pom.xml hinzuzufügen – Talijanac

+0

In diesem Fall: Projekt = Job –

0

In Jenkins 2.7.3 (und später vielleicht) die Menüführung ist etwas anders:

1) verwalten Jenkins

2) Globale Werkzeugkonfiguration

3) JDK Abschnitt

4) Taste "JDK installations" drücken

5) JDK Optionen und Pfade sind dort