2010-06-13 61 views
9

使用eclipse 3.5,當我創建一個新的maven項目時,m2eclipse自動將J2SE1.4添加到庫中,並將編譯器符合性級別自動添加到1.4(項目屬性> Java編譯器)。 我的JRE系統庫是1.6,我的默認編譯器合規性級別是1.6。我甚至沒有安裝1.4。 我可以讓m2eclipse使用我的默認設置並阻止它修改項目設置嗎?m2eclipse將JDK合規性設置爲1.4

+0

@VonC @Pascal Thivent:感謝您的解釋。但是,我注意到,m2eclipse在pom.xml文件中沒有指定默認代碼級別爲1.4,而IntelliJ或NetBeans的Maven插件選擇系統的JRE級別,這更符合我的想法。 – 2010-06-17 02:29:37

回答

6

應該遵循maven-compiler-plugin配置:

<build> 
    [...] 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    [...] 
    </build> 

(即使如mentioned in this thread,它不會方面-J工作)

This thread提醒人們內m2eclipse的之間的區別日食和maven腳本:

有一點值得一提的是,這隻應用程序當m2eclipse根據pom.xml中的配置配置Eclipse工具(如JDT,AJDT和WTP)時,將其設置爲「開發模式」。這是您通常編寫和調試應用程序,運行單元測試(使用Run as .../JUnit測試)或在Web應用程序服務器(作爲.../Server應用程序運行)上運行的方式。

但是,如果您使用Run as .../Maven build ...或從Run/Debug菜單創建相應的啓動配置,那麼您可以選擇用於啓動Maven的JVM,並且所有編譯器配置都將受到尊重的方式與它在命令行中受到尊重的方式相同。

所以:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <verbose>true</verbose> 
     <fork>true</fork> 
     <executable><!-- path-to-javac --></executable> 
     <compilerVersion>1.3</compilerVersion> 
     </configuration> 
    </plugin> 
    </plugins> 

M2E不會(也不能)使用外部Java編譯器,所以它會忽略這些配置參數。 m2僅考慮源/目標maven-compiler-plugin參數。

4

來自maven項目的JDK合規性級別爲派生的,而不是其他方式。換句話說,你需要配置的Maven編譯器插件爲1.6級合規,然後將的m2eclipse的Eclipse下獲得適當的設置:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
</plugin> 

pom.xml是主人,不是m2eclipse的。

+0

更簡單的解釋。 +1。我開始擔心。 maven-2日食問題超過1小時後纔回答。帕斯卡爾呢? ;) – VonC 2010-06-13 16:17:46

+0

@VonC LOL!我正在烹飪:)但是感謝+1(還有+1)。 – 2010-06-13 16:28:10

+0

我遇到了一個問題,eclipse忽略了使用此方法設置的源/目標版本(請參閱http://stackoverflow.com/questions/23602622/changed-jdk-version-in-pom-xml-but-eclipse-仍然使用默認-的-1-5)。在這個問題上的意見建議是我需要手動更改eclipse的設置,這似乎不同意你的答案。有什麼改變,或者我做錯了什麼? – Jules 2014-05-18 11:09:14

0

總之,我在項目上做了一個mvn eclipse:eclipse,並在Eclipse中對項目進行了F5刷新,並且正確配置了Java合規性設置。

我的設置如下。使用開普勒。在Eclipse的首選項中配置爲默認的Java 1.7(正如前面提到的,似乎忽略了pom.xml中的任何內容)。我將一堆Maven項目導入Eclipse。所有都顯示爲Java合規性級別1.4,甚至項目的構建路徑列出了Java 1.4運行時。我仔細檢查1.7是否正確指定在POM中。XML通過請求在命令行上有效POM確認設置是在POM存在以及是否正確:

mvn help:effective-pom -Doutput=eff.xml 

這表明了正確的設置存在:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <fork>true</fork> 
    </configuration> 
</plugin> 

猜測的問題是與導入部分m2e插件,在Eclipse中顯示的版本是: 1.4.0.20130601-0317