Na moim komputerze mam zainstalowane dwie wersje Java: (1.6 i 1.7 zainstalowane ręcznie przeze mnie). Potrzebuję ich obu do różnych projektów. Ale dla Mavena potrzebuję 1.7, teraz mój Maven używa wersji 1,6 java, jak mogę ustawić Maven na 1.7?
162
Odpowiedzi:
Maven używa tego
JAVA_HOME
parametru, aby znaleźć wersję Java, którą ma uruchomić. Widzę z twojego komentarza, że nie możesz tego zmienić w konfiguracji.JAVA_HOME
parametr tuż przed rozpoczęciem maven (iw razie potrzeby zmienić go z powrotem).mvn
(innych niż windows) /mvn.bat
/mvn.cmd
(windows) i ustawić tam swoją wersję java.źródło
JAVA_HOME
w swojej lokalnej powłoce bez zmiany konfiguracji maszyny (gdy tylko zamkniesz tę powłokę, zmiana zniknie). Możesz nawet zmienić to na jedno polecenie:JAVA_HOME=/path/to/jdk17/ mvn build
W POM można ustawić właściwości kompilatora, np. Dla 1.8:
źródło
Dodanie rozwiązania dla osób z zainstalowanymi wieloma wersjami Java
Mamy dużą bazę kodów, z których większość jest w Javie. Większość tego, nad czym pracuję, jest napisana w Javie 1.7 lub 1.8. Ponieważ
JAVA_HOME
jest statyczny, utworzyłem w moim aliasy.bashrc
do uruchamiania Mavena z różnymi wartościami:Dzięki temu mogę uruchomić Mavena z wiersza poleceń na moim komputerze deweloperskim, niezależnie od wersji JDK używanej w projekcie.
źródło
mvn2
imvn3
zdefiniowałeś, a nazewnictwo staje się nieco dziwne, gdy w grę wchodzą również wersje Java ...: Dalias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
przedmvn
. mvn nie widzi wartości JAVA_HOME z&&
.W oknach
Jeśli nie chcesz zmieniać swojej
JAVA_HOME
zmiennej wewnątrz zmiennych systemowych.Edytuj
mvn.bat
plik i dodaj taką linięMożna to zrobić po tym,
@REM ==== START VALIDATION ====
jak wspomniał @JonathanNa Macu (i Linuksie?)
Jeśli nie chcesz zmieniać
JAVA_HOME
zmiennej w pliku~/.bashrc
lub~/.bash_profile
możesz utworzyć
~/.mavenrc
plik i przedefiniować goJAVA_HOME
za pomocą narzędzia java_homeKontrola poczytalności
Możesz sprawdzić, czy wszystko działa poprawnie, wykonując następujące polecenia. Wersja jdk powinna być inna.
mvn -version
następnie
java -version
źródło
Dodanie moich dwóch centów i jawne podanie rozwiązania.
Mam dwa zestawy JDK zainstalowane na komputerze z systemem Windows -
JDK 1.5
iJDK 1.6
.Mój domyślny (i ustawiony na zmienną środowiskową systemu Windows)
JAVA_HOME
jest ustawiony naJDK 1.5
.Jednak mam projekt Maven , który muszę zbudować (tj. JBehave Tutorial's Etsy.com ) przy użyciu
JDK 1.6
.Moje rozwiązanie w tym scenariuszu (które zadziałało!) Jest takie, jak sugeruje
@DanielBarbarian
to ustawieniemvn.bat
.Dla niektórych, którzy nie są zaznajomieni z plikiem wsadowym okna, po prostu dodałem
set JAVA_HOME=<path_to_other_jdk>
wiersz po@REM ==== START VALIDATION ====
inmvn.bat
(tj.%MAVEN_HOME%\bin\mvn.bat
):źródło
mvn.bat
zmieniono nazwę namvn.cmd
.Niedawno, po siedmiu długich latach w Maven, dowiedziałem się o toolchains.xml. Maven ma to nawet udokumentowane i obsługuje go od 2.0.9 - dokumentacja toolchains
Dodałem więc plik toolchain.xml do mojego folderu ~ / .m2 / z następującą zawartością:
Pozwala zdefiniować, z jakich różnych JDK Maven mogą korzystać do budowania projektu, niezależnie od tego, z jakim JDK Maven działa. Coś jak przy definiowaniu JDK na poziomie projektu w IDE.
źródło
Jedno proste rozwiązanie problemu -
Na Macu wyglądałoby to tak:
PS: Jednym ze specjalnych przypadków, które znalazłem, jest to, że powyższe polecenie nie działa na skorupie „ryby”. Miałem też dostępną powłokę bash i tam działało dobrze. po prostu użyj polecenia „bash”, aby przełączyć się na powłokę bash.
źródło
Można skonfigurować źródła kompilacji przy użyciu innego JDK z
maven-compiler-plugin
.Po prostu podaj ścieżkę do
javac
w<executable>
tagu. Np. Dla java11 wygląda to tak:źródło
Aby uniknąć jakiegokolwiek wpływu na projekt i zmienne środowiskowe, możesz skonfigurować wtyczkę kompilatora Maven tylko do POM projektu, określając źródłową i docelową wersję java
źródło
Możesz ustawić Maven, aby używał dowolnej wersji Java, postępując zgodnie z poniższymi instrukcjami.
Zainstaluj jenv w linku do swojego komputera
Sprawdź dostępne wersje Java zainstalowane na komputerze, wydając następujące polecenie w wierszu poleceń.
Możesz określić globalną wersję Java za pomocą następującego polecenia.
Możesz określić lokalną wersję Java dla dowolnego katalogu (projektu), używając następującego polecenia w katalogu w wierszu poleceń.
dodaj poprawną wersję Java do swojego pom.xml
jeśli używasz mavena w wierszu poleceń, zainstaluj wtyczkę jenv maven za pomocą poniższego polecenia
Teraz możesz skonfigurować dowolną wersję Java na swoim komputerze do dowolnego projektu bez żadnych problemów.
źródło
Na komputerach Mac (zakładając, że masz zainstalowaną odpowiednią wersję)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
źródło
Bez zmiany zmiennych środowiskowych możesz zarządzać wersją java na podstawie poziomu projektu za pomocą wtyczki kompilatora Maven.
Metoda 1
Metoda 2
źródło
W systemie Windows po prostu dodaję wiele plików wsadowych dla różnych wersji JDK do folderu bin Maven w następujący sposób:
mvn11.cmd
następnie możesz użyć
mvn11
do uruchomienia Mavena w określonym JDK.źródło
W systemie Linux / Unix, JAVA_HOME w skrypcie powłoki „mvn” jest zastępowane przez ustawienia w
proszę Gdzie dodać zmienne ścieżki JAVA_HOME i MAVEN w systemie Linux
źródło
Nie odniosłem sukcesu na Macu po prostu ustawiając
JAVA_HOME
w konsoli, ale udało mi się z takim podejściem~/.mavenrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
źródło
Możesz także mieć zainstalowane dwie wersje mavena i edytować jedną z nich, edytując tutaj:
zastąpienie wyglądów% java_home% żądaną ścieżką java. Następnie po prostu wykonaj maven z tej zmodyfikowanej ścieżki
źródło