web-dev-qa-db-ja.com

特定のJavaバージョンをMavenに設定する方法

私のマシンには2つのJavaバージョンがインストールされています:(1.6と1.7が私によって手動でインストールされました)。異なるプロジェクトには両方とも必要です。しかし、Mavenには1.7が必要です。今、私のMavenは1,6 Javaバージョンを使用しています。Mavenに1.7を使用するように設定するにはどうすればよいですか。

122
andPat

MavenはJava_HOMEパラメータを使用して、実行するJavaバージョンを見つけます。あなたのコメントから、設定ではそれを変更できないことがわかりました。

  • あなたはmavenを起動する直前にJava_HOMEパラメータを設定することができます(そして必要ならば後でそれを元に戻す)。
  • mvn(non-windows)/ mvn.bat/mvn.cmd(windows)に移動して、そこにJavaのバージョンを明示的に設定することもできます。
97
DanielBarbarian

POMでは、コンパイラのプロパティを設定できます。 1.8の場合:

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

複数のJavaバージョンがインストールされている人のためのソリューションを追加する

大規模なコードベースがありますが、そのほとんどはJavaです。私が取り組んでいるものの大部分はJava 1.7か1.8のどちらかで書かれています。 Java_HOMEは静的なので、Mavenを実行するための別の値で別名を.bashrcに作成しました。

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"

これにより、プロジェクトで使用されているJDKのバージョンに関係なく、自分の開発マシンでコマンドラインからMavenを実行できます。

33

私の2セントを追加し、明示的に解決策を提供する。

私のWindowsマシンにはJDK 1.5JDK 1.6の2つのJDKがインストールされています。

私のデフォルトは(そしてWindowsシステム環境変数に設定されています)Java_HOMEJDK 1.5に設定されています。

しかし、私はJDK 1.6を使用してビルドする必要があるmavenプロジェクトを持っています(つまり JBehave Tutorial's Etsy.com )。

このシナリオでの私の解決策(これはうまくいきました!)は、@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
30
Jonathan

Windowsの場合

システム変数内のJava_HOME変数を変更したくない場合。

mvn.batファイルを編集して、このような行を追加してください

set Java_HOME=C:\Program Files\Java\jdk1.7.0_45\jre

これは@Jonathanによって言及されているように@REM ==== START VALIDATION ====の後に行うことができます。

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

27

私がつい最近、Mavenに7年間勤務した後、toolchains.xmlについて学びました。 Mavenはそれを文書化し、2.0.9からサポートしています - toolchains documentation

そこで、私は〜/ .m2 /フォルダにtoolchain.xmlファイルを以下の内容で追加しました。

<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の実行に関係なく、Mavenがプロジェクトの構築に使用できるJDKの種類を定義できます。 IDEでプロジェクトレベルでJDKを定義するときのようなものです。

20
Ondrej Burkert

プロジェクトや環境変数への影響を避けるために、ソースとターゲットのJavaバージョンを指定して、Maven Compiler PluginをプロジェクトのPOMだけに設定することができます。

  <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

シモンズ:私が見つけた一つの特別なケースは、上記の与えられたコマンドが '魚'シェルでは動作しないことです。私はbash Shellも利用可能でしたが、そこでうまくいきました。 bashシェルに切り替えるには、コマンド 'bash'を使用するだけです。

3
Pankaj

Windowsでは、次のように、異なるJDKバージョンの複数のバッチファイルをMaven binフォルダーに追加するだけです。

mvn11.cmd

@echo off
setlocal
set "Java_HOME=path\to\jdk11"
set "path=%Java_HOME%;%path%"
mvn %*

その後、mvn11を使用して、指定されたJDKでMavenを実行できます。

1
Guo Ferrell

以下の手順に従って、Mavenが任意のJavaバージョンを使用するように設定できます。

あなたのマシンにjenvをインストールしてください link

コマンドラインで次のコマンドを発行して、マシンにインストールされている利用可能なJavaのバージョンを確認します。

jenvのバージョン

次のコマンドを使用して、グローバルJavaバージョンを指定できます。

jenvグローバルOracle64-1.6.0.39

コマンドラインのディレクトリで次のコマンドを使用して、任意のディレクトリ(プロジェクト)のローカルJavaバージョンを指定できます。

jenvローカルのOracle64-1.7.0.11

pom.xmlに正しいJavaバージョンを追加してください。

コマンドラインでmavenを実行している場合jenv mavenプラグインを使用

jenv enable-plugin maven

今、あなたはあなたのマシンのどんなJavaバージョンでもどんな問題もなしにどんなプロジェクトにでも設定することができます。

1
Ranuka

Macの場合(正しいバージョンがインストールされていると仮定)

Java_HOME=`/usr/libexec/Java_home -v 1.8` mvn clean install -DskipTests

0
user2475448

また、twoのバージョンのmavenをインストールして、oneを編集して、ここで編集することもできます。

mvn(Windows以外)/mvn.bat/mvn.cmd(Windows)

あなたの%Java_home%の外観をあなたのJavaが望むパスに置き換えてください。それからその修正されたパスからmavenを実行してください。

0
Alberto Perez

コンソールでJava_HOMEを設定しただけではMacで成功しませんでしたが、この方法で成功しました

  • あなたのホームディレクトリに.mavenrcファイルを作成してください(だからファイルは~/.mavenrcのパスになるでしょう)
  • そのファイルにexport Java_HOME=$(/usr/libexec/Java_home -v 1.7)を貼り付けます
0
Martin Vich

Linux/Unixでは、 'mvn'シェルスクリプト内のJava_HOMEは、次の設定によって上書きされます。

$HOME/.mavenrc

お願いします linuxでJava_HOMEとMAVENパス変数を追加する場所

0

Java 11の場合は、設定する必要があります。

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

ではなく

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

または、このエラーが出ることもあります。

0
Andrew Spencer

あなたは 異なるJDKを使ってソースをコンパイルするmaven-compiler-pluginで設定することができます。

<executable>タグでjavacへのパスを指定するだけです。たとえば、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