2016-04-14 6 views
1

私は別のJavaプロジェクトを実行しています。私はそれらの間で切り替えるたびにjava_homeシステム環境を変更することは悪い考えであることを理解して、私はそれぞれのためにJAVA_HOMEを具体的に設定し始めています独立して。 私はを設定します。JAVA_HOMEは、Maven(バージョン2)のランタイム(Java Mavenは、Javaアプリケーションとして動作するために使用されます)に対応していますか? 私の理解では、JAVA_HOME for mavenは、コードがどのようにコンパイルされ実行されているかに影響を与えるべきではありません。maven-compiler-pluginソースとターゲットを使用して構成されています。右?私のコードに関係なく、MavenのJAVA_HOMEを設定するJava

私はmvn.batにJAVA_HOMEを設定した場合:

@REM Maven2 Start Up Batch script 
set JAVA_HOME=C:\dev\tools\jdk-1.6 

そして、私のmaven-コンパイラプラグインがこのように構成されています

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
    </configuration> 
</plugin> 

を、私はこのエラーが表示されます。

[ERROR] BUILD ERROR 
[INFO] -------------------------------------- 
[INFO] Fatal error compiling 
Embedded error: invalid target release: 1.7 

なぜmavenランタイム用に指定されたJAVA_HOMEが自分のコードに影響を与えるのですか脱毛?どのように2つの間を分離するには?

+1

でそれを変更することができますが....まず、マシンにJDK6を使用するように指示してから、Java 7に対してコンパイルします。これで問題は発生しないと想定していますか? – Stultuske

+0

Maven on Java 6を実行する理由は何ですか? – bedrin

+0

@Stultuskeが正しいです。 'maven-compiler-plugin'のソースとターゲットを1.6に変更してください。 – Hohenheim

答えて

0

は、Mavenは.javaファイル

をコンパイルするために、それは同じフォルダからJDKを使用するデフォルトではJAVA_HOME で指定されたJREを使用します。あなたはmaven-compile-pluginconfiguration

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.5.1</version> 
     <configuration> 
      <verbose>true</verbose> 
      <fork>true</fork> 
      <executable><!-- path-to-javac --></executable> 
      <compilerVersion>1.3</compilerVersion> 
     </configuration> 
     </plugin> 
    </plugins> 
    [...] 
    </build> 
    [...] 
</project> 
関連する問題