Jak ustawić konkretną wersję Javy na Maven

Na moim komputerze mam zainstalowane dwie wersje Javy: (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 java 1,6, jak Mogę ustawić Mavena na 1.7?

Author: Eric Leschinski, 2013-10-29

8 answers

Maven używa parametru JAVA_HOME, aby znaleźć wersję Javy, którą ma uruchomić. Widzę z twojego komentarza, że nie można tego zmienić w konfiguracji.

  • możesz ustawić parametr JAVA_HOME tuż przed uruchomieniem Mavena (i w razie potrzeby zmienić go z powrotem).
  • możesz też wejść do swojego mvn (nie-windows)/mvn.bat/mvn.cmd(windows) i ustaw tam swoją wersję Javy.
 69
Author: DanielBarbarian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-11 08:45:00

W POM można ustawić właściwości kompilatora, np. dla 1.8:

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>
 33
Author: Edward Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-30 15:38:18

Dodając moje dwa centy i wyraźnie dostarczając rozwiązanie.

Mam dwa JDK zainstalowane na moim komputerze z systemem Windows - JDK 1.5 i JDK 1.6.

Moje domyślne (i ustawione na zmienną środowiskową systemu windows) JAVA_HOME jest ustawione na JDK 1.5.

[[12]} mam jednak projekt Mavena, który muszę zbudować (np. JBehave Tutorial ' s Etsy.com ) za pomocą JDK 1.6.

Moje rozwiązanie w tym scenariuszu (które zadziałało!), jest zgodnie z sugestią @DanielBarbarian, aby ustawić go w mvn.bat.

Dla niektórych nie znam pliku wsadowego Windowsa, po prostu dodałem linię set JAVA_HOME=<path_to_other_jdk> po @REM ==== START VALIDATION ==== w mvn.bat (tj., %MAVEN_HOME%\bin\mvn.bat):

@REM ==== START VALIDATION ====
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre
if not "%JAVA_HOME%" == "" goto OkJHome
 25
Author: Jonathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-08 02:49:54

Na windows

Jeśli nie chcesz zmieniać swojej zmiennej JAVA_HOME wewnątrz zmiennych systemowych.

Edytuj swój plik mvn.bat i dodaj wiersz w ten sposób

set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre

Można to zrobić po @REM ==== START VALIDATION ==== Jak wspomina @ Jonathan

Na Mac (&Linux ?)

Jeśli nie chcesz zmieniać swojej zmiennej JAVA_HOME wewnątrz ~/.bashrc lub ~/.bash_profile

Możesz utworzyć plik ~/.mavenrc i przedefiniować swój JAVA_HOME za pomocą java_home narzędzie

export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`

Kontrola Zdrowia Psychicznego

Możesz sprawdzić, czy wszystko działa poprawnie, wykonując następujące polecenia. Wersja jdk powinna być inna.

mvn -version

Then

java -version

 19
Author: Ronan Quillevere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-30 08:19:00

[1]} niedawno, po siedmiu długich latach pracy z Mavenem, dowiedziałem się o łańcuchach narzędzi.xml. Maven ma nawet udokumentowane i obsługuje go od 2.0.9 - toolchains documentation

Więc dodałem toolchain.plik xml do mojego ~/.m2 / folder o następującej treści:

<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
 <!-- JDK toolchains -->
 <toolchain>
   <type>jdk</type>
   <provides>
     <version>1.8</version>
     <vendor>sun</vendor>
   </provides>
   <configuration>
     <jdkHome>/opt/java8</jdkHome>
   </configuration>
 </toolchain>
 <toolchain>
   <type>jdk</type>
   <provides>
     <version>1.7</version>
     <vendor>sun</vendor>
   </provides>
   <configuration>
     <jdkHome>/opt/java7</jdkHome>
   </configuration>
 </toolchain>
</toolchains>

Pozwala określić, jakie różne JDK Maven może użyć do zbudowania projektu niezależnie od JDK Maven działa z. Coś jak definiowanie JDK na poziomie projektu w IDE.

 10
Author: Ondrej Burkert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-17 17:27:14

Dodanie rozwiązania dla osób z wieloma zainstalowanymi wersjami Javy

Mamy dużą bazę kodową, 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 statyczne, utworzyłem w moim .bashrc aliasy do uruchamiania Mavena o różnych wartościach:

alias mvn5="JAVA_HOME=/usr/local/java5 && mvn"
alias mvn6="JAVA_HOME=/usr/local/java6 && mvn"
alias mvn7="JAVA_HOME=/usr/local/java7 && mvn"
alias mvn8="JAVA_HOME=/usr/local/java8 && mvn"

To pozwala mi uruchomić Mavena z linii poleceń na mojej maszynie deweloperskiej, niezależnie od wersji JDK używanej w projekcie.

 8
Author: Jonathan Landrum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-20 16:09:22

Aby uniknąć wpływu na twój projekt i Zmienne środowiskowe, możesz skonfigurować wtyczkę kompilatora Maven tylko do pom projektu, określając źródłową i docelową wersję Javy

  <plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    ...
  </plugins>
 3
Author: Tonino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 09:25:22

Jedno proste rozwiązanie problemu -

JAVA_HOME= / usr / lib / jvm / java-6-sun / mvn clean install

Na Macu wyglądałoby to jak -

JAVA_HOME= / Library / Java / JavaVirtualMachines / jdk1.7.0_21.jdk / Contents/ Home / mvn clean install

PS: jeden szczególny przypadek, który znalazłem to powyższe polecenie nie działa na' fish ' shell. Miałem również dostępną powłokę bash i działało dobrze. wystarczy użyć polecenia 'bash', aby przełączyć się na bash shell.

 1
Author: Pankaj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-03 12:23:05