Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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.

Ответ 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