На моей машине установлены две версии java: (1.6 и 1.7 установлены вручную мной). Мне нужны оба для разных проектов. Но для Maven мне нужно 1.7, теперь мой Maven использует 1,6 версию java, как я могу настроить Maven на использование 1.7?
Как установить конкретную версию Java для Maven
Ответ 1
Maven использует параметр JAVA_HOME
чтобы найти версию Java, которую предполагается запустить. Я вижу из вашего комментария, что вы не можете изменить это в конфигурации.
- Вы можете установить параметр
JAVA_HOME
непосредственно перед запуском maven (и при необходимости изменить его обратно). - Вы также можете зайти в свой
mvn
(не windows)/mvn.bat
/mvn.cmd
(windows) и явно указать там свою версию java.
Ответ 2
В POM вы можете установить свойства компилятора, например. для 1.8:
<project>
...
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project>
Ответ 3
Добавление решения для людей с несколькими установленными версиями 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, используемой в проекте.
Ответ 4
Добавление двух центов и явное предоставление решения.
У меня есть два JDK, установленных на моей Windows-машине - JDK 1.5
и JDK 1.6
.
Мое значение по умолчанию (и задано для переменной системной среды Windows) JAVA_HOME
установлено на JDK 1.5
.
Однако у меня есть проект maven, который мне нужно построить (т.е. JBehave Tutorial 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
Ответ 5
В окнах
Если вы не хотите изменять переменную 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
Ответ 6
Я только недавно, после семи долгих лет работы с Maven, узнал о toolchains.xml. Maven даже документирует и поддерживает его от версии 2.0.9 - документации по инструментам
Итак, я добавил файл toolchain.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>
Он позволяет вам определить, какие разные JDK файлы Maven могут использовать для создания проекта независимо от работы JDK Maven. Например, когда вы определяете JDK на уровне проекта в среде IDE.
Ответ 7
Чтобы избежать какого-либо воздействия на ваш проект и переменные среды, вы можете настроить плагин Maven Compiler только на POM проекта, указав версию java версии Source и Target
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
Ответ 8
Одно простое решение проблемы -
JAVA_HOME =/usr/lib/jvm/java-6-sun/mvn clean install
На Mac это будет выглядеть примерно так:
JAVA_HOME =/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Содержание/Главная/mvn clean install
PS: Один специальный случай, который я нашел, - это приведенная выше команда не работает в оболочке "fish". У меня также была оболочка bash, и там она отлично работала. просто используйте команду 'bash' для переключения на оболочку bash.
Ответ 9
Вы можете настроить Maven на использование любой версии Java, следуя инструкциям ниже.
Установите jenv на вашу машину по ссылке
Проверьте доступные версии Java, установленные на вашем компьютере, введя следующую команду в командной строке.
версии jenv
Вы можете указать глобальную версию Java, используя следующую команду.
jenv global oracle64-1.6.0.39
Вы можете указать локальную версию Java для любого каталога (Project), используя следующую команду в каталоге в командной строке.
jenv local oracle64-1.7.0.11
Добавьте правильную версию Java в ваш pom.xml
если вы используете maven в командной строке, установите плагин jenv maven, используя команду ниже
jenv enable-plugin maven
Теперь вы можете настроить любую версию Java на вашем компьютере для любого проекта без каких-либо проблем.
Ответ 10
Вы можете настроить исходники компиляции, используя другой JDK с помощью maven-compiler-plugin
.
Просто укажите путь к javac
в <executable>
. Например, для java11 это выглядит так:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source>
<target>11</target>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk-11.0.1\bin\javac</executable> <!--PATH TO JAVAC -->
</configuration>
</plugin>
Ответ 11
В Windows я просто добавляю несколько командных файлов для разных версий JDK в папку Maven bin следующим образом:
mvn11.cmd
@echo off
setlocal
set "JAVA_HOME=path\to\jdk11"
set "path=%JAVA_HOME%;%path%"
mvn %*
тогда вы можете использовать mvn11
для запуска Maven в указанном JDK.
Ответ 12
В Linux/Unix сценарий оболочки JAVA_HOME в 'mvn' переопределяется настройками в
$HOME/.mavenrc
Пожалуйста, где добавить переменные пути JAVA_HOME и MAVEN в Linux
Ответ 13
Также вы можете установить две версии maven и отредактировать одну из них, отредактировав здесь:
МВН (без окон)/mvn.bat/mvn.cmd (окна)
заменив ваш внешний вид% java_home% на ваш желаемый путь Java. Затем просто выполните Maven с этого измененного пути
Ответ 14
У меня не было успеха на Mac с просто установкой JAVA_HOME
в консоли, но я был успешным с этим подходом
- Создайте файл .mavenrc в вашем домашнем каталоге (поэтому путь к файлу будет
~/.mavenrc
- В этот файл вставьте
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
Ответ 15
На Mac (если у вас установлена правильная версия)
JAVA_HOME='/usr/libexec/java_home -v 1.8' mvn clean install -DskipTests