2016-04-14 19 views
7

Kiedy próbuję uruchomić moją pracę Jenkins Maven pojawia się następujący błąd:Maven buduje z niewłaściwym JDK na 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] 

Oznacza to, że Maven używa Java 1.8, ale przypuszcza się, aby użyć Java 1.7.

Pobiegłem Maven w trybie debugowania i wyświetlane odpowiednie wersje:

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

Serwer Jenkins biegnie z 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 
... 

próbowałem uruchamiając pracę z pustym Maven repo i mówienie Maven dokładnie, której wersji używać, ale bez powodzenia.

Wzywam Maven tak:

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

Czy robię coś źle?

+1

Czy próbowałeś wyraźnie określić Java 1.7 dla wtyczki kompilatora w naszym pliku POM? – CptBartender

+0

@CptBartender Nie, spróbuję. – fa94

+0

@CptBartender Wciąż ten sam błąd. – fa94

Odpowiedz

-1

W końcu dowiedziałem się, na czym polega problem.

Używam innego modułu w mojej kompilacji, który pobieram z serwera nexus. Ktoś popełnił błąd i przesłał wersję do nexusa, która nie jest zsynchronizowana z wersją pod kontrolą wersji. Wersja na nexusie ma specyfikację Java 1.8, ale wersja pod kontrolą wersji ma Javę 1.7, więc nie zauważyłem jej wcześniej.

Dziękuję wszystkim za wspaniałe odpowiedzi.

0

Spróbuj wykonać następujące czynności:

1) Idź do Manage Jenkins -> System Configure

2) Dodaj JAVA_HOME i jego ścieżkę w Global Properties - Zmienne> Środowisko

3) Dodaj JDK i ścieżka w sekcji JDK

Jeśli nie, spróbuj po tym poście, jak wiele rozwiązań oferowane są tutaj: Maven uses an incorrect Java version when it is executed by Jenkins

+0

Próbowałem już rozwiązań wymienionych w drugim pytaniu, ale nic nie działało. Nie mogę również zmieniać zmiennych globalnych, ponieważ serwer Jenkins jest również używany przez inne projekty, które wymagają innych wersji Javy. – fa94

7

Właściwe rozwiązanie polega na dodaniu potrzebnej JDK do globalnej konfiguracji Jenkins, a następnie do wybrania wymaganej wersji/instalacji JDK w ramach konfiguracji budowania projektu.

Rozpocznij od skopiowania potrzebnych JDK do maszyny budującej. Następnie otwórz konfigurację Jenkinsa i przejdź do sekcji "JDK" [Jenkins -> Manage Jenkins -> Configure System]. Dodaj żądane JDK do Jenkinsa. Poniższy rysunek przedstawia przykład Jenkinsa skonfigurowanego z dwoma różnymi JDK. JDK installations under Jenkins

Teraz w ramach konfiguracji projektu [YourProject -> Konfiguruj] dostępna będzie nowa opcja. Możesz wybrać żądany JDK do zbudowania projektu, jak na zdjęciu: enter image description here

"(Domyślnie)" JVM na zdjęciu odnosi się do JDK, pod którym działa Jenkins. Prosta naprawa polegałaby na zmianie tego JDK na wersję wymaganą dla twojego projektu (przez zmianę skryptu startowego Jenkinsa lub użycie JAVA_HOME). To zadziała. Jednak gdy już będziesz potrzebował zbudować dwa lub więcej konfliktowych projektów, i tak będziesz musiał skonfigurować wiele JDK.

Używając podobnych kroków, możesz dodać wiele instalacji maven do serwera Jenkins.

+1

Nie zapomnij dodać wartości wersji źródłowej/docelowej do pom.xml – Talijanac

+0

W tym przypadku: Projekt = Praca –

0

W Jenkins 2.7.3 (a później być może) nawigacja menu jest nieco inna:

1) Zarządzanie Jenkins

2) Globalna Configuration Tool sekcja

3) JDK

4) naciśnij przycisk "Instalacje JDK"

5) Opcje i ścieżki JDK są dostępne

Powiązane problemy