7

システム (Linux、/opt ディレクトリの下) に JDK 1.6 と 1.7 の両方をインストールしています。パスに JDK 1.6 の bin ディレクトリを追加したので、これがデフォルトで使用される Java のバージョンです。

私は、JDK 1.7 を必要とするプロジェクトと、1.6 を必要とするプロジェクトに取り組んでいます。以前は Eclipse 内で JDK 1.7 の設定を行っていましたが、このプロジェクトを Maven に変換して、誰もが好みのエディターを使用できるようにしたいと考えました。

デフォルトで1.6を使用し、プロジェクトを指定するときにPOMで必要なときに1.7を使用するように、Mavenのインストール/構成で(POMファイルではなく)1.7の場所を指定することは可能ですか? 私の知る限り、プロジェクトに取り組んでいる全員が POM ファイルの内容を同じにする必要があるため、Java 7 ディレクトリの場所をここに設定するのは気が進まない (全員のマシンで異なるため)。

$ mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 13:51:28+0000)
Maven home: /opt/apache-maven-3.0.5
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: /opt/jdk1.6.0_45/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "3.8.0-27-generic", arch: "amd64", family: "unix"

以下を追加します。

<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
            <configuration>
                <outputDirectory>${project.build.outputDirectory}/resources</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

結果:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project golemlite: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
4

3 に答える 3

1

Maven は、JAVA_HOME システム変数にあるバージョンを使用します。したがって、.bash_profile 関数に追加して、現在のシェルだけでそれらを交換するのが好きです。これにより、デフォルトで Java 6 をそのままにしておくことができますが、新しいプロジェクトをビルドする必要がある場合は、Java 7 または 8 に簡単に切り替えることができます。

Java のバージョンをオンデマンドで変更する要点

ターミナルが bash でない場合は、このソリューションを微調整する必要があるかもしれません。

個人的には、settings.xml に設定するよりもこれを好みますが、すべてのビルド ツールで同じソリューションを使用でき、Java の他のバージョンをターゲットにビルドされた jar を実行するだけでも、少し手間がかかります。

したがって、解決策は、次のようなものを .bash_profile に追加することです (マシンに Java バージョンがインストールされている場所へのパスを適切に微調整します)。

function java6
{
  JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0_65-b14-462.jdk/Contents/Home
  export JAVA_HOME
}

function java7
{
  JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
  export JAVA_HOME
}
于 2014-04-08T10:04:50.647 に答える