2012-03-07 21 views
9

pom.xmlファイルで次のように定義していないと、私のシステム上でコンパイル時に使用するJava JDKのバージョンがMaven用に定義されています(私はいくつかのバージョンを自分のシステムにインストールしています)。JAVA_HOMEはそれら)?Mavenコンパイラで使用されるJDKのバージョンはどこで指定されていますか?

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

まだ解決策の問題があります。私のユースケースのように、私はJDk1.8をインストールして、Gentリポジトリをクローンしました。私はMavenコンパイラプラグインの設定を変更しないでください。私はに1.7と1.8の両方のJDKを設定しました。提供されたソースを変更せずに、mavenにonまたはotherを使用するように通知するにはどうすればよいですか? – jwilleke

答えて

9

Mavenのドキュメントは、コンパイラプラグインは、プロジェクトのソースをコンパイルするために使用される

を言います。デフォルトのコンパイラはjavacで、Javaソースをコンパイルするために使用されます。 現在、Mavenを実行するJDKとは関係なく、デフォルトのソース設定は1.5で、デフォルトのターゲット設定は1.5です。これらのデフォルト値を変更する場合は、Javaコンパイラの-sourceおよび-targetの設定の説明に従って、ソースとターゲットを設定する必要があります。

REF:http://maven.apache.org/plugins/maven-compiler-plugin/index.html

MavenのJiraのChange default source level to 1.5


EDIT上のこの興味深いスレッドがあります:
は、Mavenの3.0以降の更新:

コンパイラプラグインはプロジェクトのソースをコンパイルします。 3.0以降、デフォルトのコンパイラはjavax.tools.JavaCompiler(Java 1.6を使用している場合)であり、Javaソースをコンパイルするために使用されます。 javacを使用してプラグインを強制したい場合は、プラグインオプションforceJavacCompilerUseを設定する必要があります。

出典:http://maven.apache.org/plugins/maven-compiler-plugin/index.html

おかげでそれを指摘してnachteil

+0

本当にありがとうございました。 – rapt

+0

バージョン3.0以降、これは真実ではありません - 下記の私の答えを見てください。 – nachteil

+0

@nachteilが更新されました。ありがとうございます。 – Nishant

1

mavenのset.xmlファイルにプロパティを定義する必要があります。プロパティは、2番目のjavacパスです(D:¥dev¥java¥ibm¥java1.6.0¥bin¥javac)。pomファイルのmaven-compiler-pluginのこのプロパティを使用した後。

setting.xml

<settings> 
    <profiles> 
     <profile> 
      <id>IBM_JAVA</id> 
      <properties> 
       <IBM_JAVA_1_6_JAVAC>D:\dev\java\ibm\java1.6.0\bin\javac</IBM_JAVA_1_6_JAVAC> 
      </properties> 
     </profile> 
    </profiles> 
    <activeProfiles>  
     <activeProfile>IBM_JAVA</activeProfile> 
    </activeProfiles> 
    </settings> 

のpom.xml

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
      <fork>true</fork> 
      <executable>${IBM_JAVA_1_6_JAVAC}</executable> 
      <encoding>UTF-8</encoding> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 
5

単にdoucemntationプラグインmavenのコンパイラからプロパティ

<properties> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.test.skip>true</maven.test.skip> 
</properties> 
3

を使用します。

デフォルトコンパイラは3.0以降、Java 1.6を使用している場合はjavax.tools.JavaCompilerであり、Javaソースをコンパイルするために使用されます。 javacを使用してプラグインを強制したい場合は、プラグインオプションforceJavacCompilerUseを設定する必要があります。

私はこの記事を検索エンジンで見つけました。更新する価値があると思います。 また、-target-sourceのオプションは、コンパイラ自体には影響しませんが、ソースコードを処理して出力バイトコードを生成する方法に影響します。