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