Как установить конкретную версию java для Maven


на моей машине у меня установлены две версии java: (1.6 и 1.7, установленные вручную мной). Мне нужны оба для разных проектов. Но для Maven мне нужно 1.7, теперь мой Maven использует версию java 1,6, как я могу установить Maven для использования 1.7?

8 87

8 ответов:

Maven использует JAVA_HOME параметр, чтобы найти, какая версия Java он должен работать. Я вижу из вашего комментария, что вы не можете изменить это в настройках.

  • вы можете установить JAVA_HOME параметр непосредственно перед запуском maven (и изменить его обратно, если это необходимо).
  • вы также можете войти в свой mvn(не-Windows)/mvn.bat/mvn.cmd(windows) и установите свою версию java явно там.

в POM вы можете установить свойства компилятора, например, для 1.8:

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>

добавление моих двух центов и явно предоставление решения.

у меня есть два JDKs, установленных на моей машине Windows -JDK 1.5 и JDK 1.6.

Мой по умолчанию (и установить в системную переменную среды windows)JAVA_HOME установлено значение JDK 1.5.

однако у меня есть проект maven, который мне нужно построить (т. е. JBehave учебник Etsy.com) используя JDK 1.6.

мое решение в этом случае (который работал!), как предложено @DanielBarbarian установить его в mvn.bat.

для некоторых не знакомых с пакетным файлом окна, я просто в основном добавил set JAVA_HOME=<path_to_other_jdk> строке после @REM ==== START VALIDATION ==== на mvn.bat (то есть,%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

на windows

если вы не хотите менять свой JAVA_HOME переменная внутри системных переменных.

редактировать mvn.bat файл и добавить строку, как это

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

это можно сделать после @REM ==== START VALIDATION ==== как упоминалось @Jonathan

На Mac (&Linux ?)

если вы не хотите менять свой JAVA_HOME переменной внутри ~/.bashrc или ~/.bash_profile

вы можете создать ~/.mavenrc файл и переопределить ваш JAVA_HOME С помощью java_home tool

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

Вменяемость Проверить

вы можете убедиться, что все работает нормально, выполнив следующие команды. Версия jdk должна быть другой.

mvn -version

затем

java -version

Я совсем недавно, после семи долгих лет с Maven, узнал о цепях инструментов.XML. Maven даже документировал и поддерживает его с 2.0.9 - toolchains documentation

поэтому я добавил набор инструментов.XML-файл в ~/.m2 / папка со следующим содержимым:

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

Это позволяет определить, какие различные JDKs Maven может использовать для построения проекта независимо от JDK Maven работает С. Вроде как при определении JDK на уровне проекта в IDE.

добавление решения для людей с несколькими установленными версиями Java

у нас есть большая кодовая база, большая часть которой находится в Java. Большая часть того, над чем я работаю, написана на Java 1.7 или 1.8. Так как JAVA_HOME статично, я создал псевдонимы в моем .bashrc для запуска Maven с разными значениями:

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"

Это позволяет мне запускать Maven из командной строки на моей машине разработки независимо от версии JDK, используемой в проекте.

чтобы избежать какого-либо влияния на ваш проект и переменные среды, вы можете настроить плагин компилятора Maven только для POM проекта, указав исходную и целевую версию java

  <plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    ...
  </plugins>

одно простое решение проблемы -

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

на Mac, это будет выглядеть примерно так -

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

PS: один особый случай, который я нашел, - это приведенная выше команда, которая не работает на раковине "рыбы". У меня также была доступная оболочка bash, и она отлично работала там. просто используйте команду 'Баш', чтобы переключиться в оболочку Bash.