it-swarm.com.ru

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

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

105
andPat

Maven использует параметр Java_HOME, чтобы найти, какую версию Java предполагается запустить. Я вижу из вашего комментария, что вы не можете изменить это в конфигурации. 

  • Вы можете установить параметр Java_HOME непосредственно перед запуском maven (и при необходимости изменить его обратно). 
  • Вы также можете перейти к своему mvn (не для windows)/mvn.bat/mvn.cmd (windows) и явно указать там свою версию Java.
89
DanielBarbarian

В POM вы можете установить свойства компилятора, например, для 1.8:

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>
40
Edward Ross

Добавление двух моих центов и явное предоставление решения.

На моем компьютере с Windows установлено два пакета JDK - JDK 1.5 и JDK 1.6.

У меня по умолчанию (и установлена ​​переменная системной среды Windows) Java_HOME установлено значение JDK 1.5.

Тем не менее, у меня есть проект maven, который мне нужно создать (то есть, Etsy.com из JBehave Tutorial ), используя 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
29
Jonathan

Добавление решения для людей с несколькими установленными версиями 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, используемой в проекте.

26
Jonathan Landrum

На окнах 

Если вы не хотите изменять переменную 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

24
Ronan Quillevere

Я только недавно, после семи долгих лет работы с 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.

16
Ondrej Burkert

Чтобы избежать какого-либо влияния на ваш проект и переменные среды, вы можете настроить плагин компилятора 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>
3
Tonino

Одно простое решение проблемы -

Java_HOME =/usr/lib/jvm/Java-6-Sun/mvn чистая установка

На Mac это будет выглядеть примерно так: 

Java_HOME =/Библиотека/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Содержание/Главная/mvn clean install

PS: Один особый случай, который я обнаружил, это приведенная выше команда, которая не работает на «рыбной» оболочке. У меня также был доступный bash Shell, и там он работал нормально. просто используйте команду 'bash', чтобы переключиться на bash Shell.

3
Pankaj

Также вы можете установить две версии maven и отредактировать одну из них, отредактировав здесь:

мВН (без окон) /mvn.bat/mvn.cmd (окна) 

заменив ваши появления% Java_home% на желаемый путь Java. Затем просто выполните Maven с этого измененного пути

0
Alberto Perez

У меня не было успеха на Mac с просто установив Java_HOME в консоли, но я был успешным с этим подходом

  • Создайте файл .mavenrc в вашем домашнем каталоге (поэтому путь к файлу будет ~/.mavenrc
  • В этот файл вставьте export Java_HOME=$(/usr/libexec/Java_home -v 1.7)
0
Martin Vich

В Linux/Unix сценарий Java_HOME в сценарии оболочки 'mvn' переопределяется настройками в

$HOME/.mavenrc

пожалуйста Где добавить переменные пути Java_HOME и MAVEN в Linux

0
Bernhard Thalmayr

Для Java 11 вам нужно установить

<Java.version>11</Java.version>

и не 

<Java.version>1.11</Java.version>

или вы также можете получить эту ошибку

0
Andrew Spencer

Вы можете настроить компилировать исходники, используя другой 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>
0
Ruslan