Как установить конкретную версию java в Maven
на моей машине установлены две версии java: (1.6 и 1.7, установленные мной вручную). Они оба нужны мне для разных проектов. Но для Maven мне нужен 1.7, теперь мой Maven использует версию 1,6 java, как я могу установить 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
export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`
Вменяемость Проверить
вы можете убедиться, что все работает нормально, выполнив следующие команды. Версия jdk должна быть другой.
mvn -version
затем
java -version
Я совсем недавно, после семи долгих лет работы с Maven, узнал о цепочках инструментов.XML. Maven даже документировал и поддерживает его с 2.0.9 -документация toolchains
поэтому я добавил набор инструментов.xml-файл для my ~/.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 чистая установка
на Mac, это будет выглядеть примерно так -
JAVA_HOME= / Library / Java/JavaVirtualMachines / jdk1.7.0_21.jdk/содержание/ главная / mvn clean install
PS: один особый случай, который я нашел, - это приведенная выше команда не работает на "рыбе". У меня также была доступная оболочка bash, и она отлично работала там. просто используйте команду "bash" для переключения на оболочку bash.