使用eclipse 3.5,當我創建一個新的maven項目時,m2eclipse自動將J2SE1.4添加到庫中,並將編譯器符合性級別自動添加到1.4(項目屬性> Java編譯器)。 我的JRE系統庫是1.6,我的默認編譯器合規性級別是1.6。我甚至沒有安裝1.4。 我可以讓m2eclipse使用我的默認設置並阻止它修改項目設置嗎?m2eclipse將JDK合規性設置爲1.4
回答
應該遵循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參數。
來自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的。
更簡單的解釋。 +1。我開始擔心。 maven-2日食問題超過1小時後纔回答。帕斯卡爾呢? ;) – VonC 2010-06-13 16:17:46
@VonC LOL!我正在烹飪:)但是感謝+1(還有+1)。 – 2010-06-13 16:28:10
我遇到了一個問題,eclipse忽略了使用此方法設置的源/目標版本(請參閱http://stackoverflow.com/questions/23602622/changed-jdk-version-in-pom-xml-but-eclipse-仍然使用默認-的-1-5)。在這個問題上的意見建議是我需要手動更改eclipse的設置,這似乎不同意你的答案。有什麼改變,或者我做錯了什麼? – Jules 2014-05-18 11:09:14
總之,我在項目上做了一個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
- 1. Eclipse一直忘記JDK合規性,將它設置爲1.6
- 2. cglib編譯器jdk合規
- 3. 爲什麼WebSphere 6.1(JDK 1.5兼容)將我的JSP編譯爲JDK 1.4?
- 4. 爲.NET程序集設置CLS合規性
- 5. 使用AMP HTML,將鏈接規範href屬性設置爲磅(#)是否合法?
- 6. 配置m2eclipse:「Eclipse運行在JRE中,但需要JDK」
- 7. 更改jdk合規性級別後生成路徑錯誤
- 8. 特定端口的Apache配置設置(PCI合規性)
- 9. 即使在安裝JDK 7時,將Mac Lion(10.7.5)默認設置爲Java JDK 6
- 10. 將屬性設置爲com.google.appengine.api.datastore.Entity
- 11. 將屬性設置爲類
- 12. Eclipse JDK設置如何影響系統的JDK設置
- 13. 如何在m2eclipse中設置一個空的mvn屬性?
- 14. 將jQueryMobile 1.4按鈕設爲1.3
- 15. m2eclipse不尊重更新策略設置
- 16. 在Tomcat 5.5上將JSP頁面語法設置爲JDK 1.5
- 17. 將屬性設置爲最後位置
- 18. 設置Eclipse和Java JDK
- 19. 設置$ JAVA_HOME並安裝JDK
- 20. JDK規範錯誤
- 21. 源代碼在JDK 1.4和JUnit測試案例在JDK 1.5
- 22. WiX:將值設置爲多個屬性的組合
- 23. JBOSS 5.1是否在JDK 1.4中運行?
- 24. 使用JDK-1.4編譯的SPecJVM2008
- 25. 爲什麼我的項目導入jdk 1.8而pom.xml設置爲jdk 1.7?
- 26. 爲什麼我需要將項目合規性更改爲1.5?
- 27. Boost.Spirit.Qi:獲取規則的屬性並將其設置爲封閉規則的結構屬性的字段?
- 28. Javascript:將元素值設置爲集合
- 29. 代碼合規性
- 30. 使用JDK 7與使用JDK 8並使用編譯器合規性級別1.7有什麼區別?
@VonC @Pascal Thivent:感謝您的解釋。但是,我注意到,m2eclipse在pom.xml文件中沒有指定默認代碼級別爲1.4,而IntelliJ或NetBeans的Maven插件選擇系統的JRE級別,這更符合我的想法。 – 2010-06-17 02:29:37