2017-06-15 5 views
0

私はmavenコンパイラプラグインとそれが何をしているのかかなり混乱しています。私はいくつかのモジュールを持つプロジェクトを持っています。私の一番上のpom.xmlでは、私はmavenコンパイラプラグインでの混乱

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
    <inherited>true</inherited> 
    <configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
    </configuration> 
</plugin> 

私の理解では、このコードをコンパイルするために使用されるJDKのコンパイラのバージョンを指定している部分があり、このセクションは、すべてのモジュールによって継承されます。私のIntelliJ IDEAで取得できないことは、設定でプロジェクトJDKを指定することができ、設定を上書きするように思えます。 IDEでmavenをインストールすると、JDK 8のjavacを使ってコンパイルすることが確認できます。では、このセクションは正確に何をしていますか?

答えて

0

正しいですか。 maven-compilerの設定は、子モジュールによって継承される必要があります。

私はIntelliJについてよくわかりませんが、Eclipseの選択肢&は、必要なものをmaven configから選択し、残りのすべてについては独自の設定を使用していることがわかります。 したがって、私はIntelliJが同様のことをすると思いますか?

これをテストする最も簡単な方法は、コマンドラインでmvn clean installを実行し、「勝ち」を確認することです。 1.8でコンパイルされた成果物が得られた場合は、Maven設定で何かが見つからないことを意味し、それらの設定が子に伝播しないようにします。 1.7でコンパイルされたアーティファクトを取得した場合、それを行うIntelliJであり、maven-compiler-pluginではありません。

+0

私のシステムにはJDK 8しかインストールされていません。コンパイルプラグインでバージョンを設定しても、mavenが正常に動作するようです。だからこのプラグインは役に立たない? – fhcat

+0

JDK 8 _can_ JDK 7向けのソースをコンパイルするので、JDK 8のみを持っていても問題ありません。 プラグインは役に立たないわけではありません。 IntelliJ(例えばJenkins経由のCIの場合)を使わずにビルドを外部で実行したい場合は、それが有効になります。 – Andrei