Как установить конкретную версию 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.