2017-01-13 88 views
1

我的項目使用Spring Framework 4.0.0 REALESE,也許它不適用於JDK版本1.5,所以我想將其更改爲SE 1.8。我試圖將我的Web項目的JRE系統庫從SE 1.5更新到1.8。但是我從Maven更新項目後發現,我的項目會自動返回到舊版本。我該如何解決它?如何更改Maven項目的JRE系統庫?

+0

這可能幫助http://stackoverflow.com/questions/27037657/stop-intellij-idea-to-switch-java-language-level-everytime-the-pom-is-reloaded/27037879# 27037879 – vikingsteve

回答

1

你的問題不是很清楚,所以我一般回答:所有的

首先,你需要決定哪個Java用來啓動Maven的。這有一些暗示,因爲更新的Maven和插件版本需要某個版本。如果你從IDE啓動Maven,這可能會更復雜,因爲用於IDE的JVM用於maven,除非你覆蓋它。

如果您通常不做其他任何操作,則此Java VM也用於運行Java編譯器。因此,它控制語言級別,輸出類版本和使用的系統庫。不過有時你想要有一個不同的編譯器(你應該避免它,但你可以這樣做)。在這種情況下,您可以指定編譯插件(以及其他編譯插件)使用fork模式,然後指定Java的路徑或使用Toolchain(這兩個選項均在SO上進行了描述)

最後是編譯器的source level and target version settings

這也支配Eclipse的項目(使用Alt + F5重新讀取它)將使用的源代碼級別和「系統庫」。 Eclipse從Maven編譯器設置中提取這些設置,通常將它們指定爲POM屬性。

最後不要忘記實際用於啓動項目或應用程序服務器的Java。

+0

首先感謝您的回答,但是從POM文件配置不適合我。我的Web項目現在運行在J2SE-1.5上,我希望它運行在J2SE-1.8上。我該怎麼做: 我右鍵單擊我的項目,然後選擇配置類路徑。然後我刪除舊版本並添加一個新版本。但是當我選擇Maven-> Update項目時,我的項目會返回到舊版本。所以我想問的問題是如何保持更新項目後我更改的版本。 –

+0

從3.3.1開始的Maven需要Java 7,其中Maven到3.2.5需要Java 6和Java 5之前。詳情可以在這裏找到:http://maven.apache.org/docs/history.html。所有的Maven插件都需要Java 6,通常從3.0.X版本開始。例如,對於[maven-install-plugin](http://maven.apache.org/plugins/maven-install-plugin/plugin-info.html),可以找到插件的詳細信息。 – khmarbaise

+1

如果你想配置java 1。在Eclipse中需要8個系統庫,您需要確保a)eclipse發現/知道1.8環境,並且將'maven.compiler.target'設置爲1.8作爲POM屬性。在Eclipse中刷新Maven配置後,項目將擁有正確的系統庫。 (如果你用手偏好來改變它,eclipse會在下一次使POM更新時忘記它)。我擴大了答案。這當然包括Maven項目類型或(我認爲)Maven自然。對於非maven項目,只需在項目設置中切換jvm。 – eckes

2

在我們的項目中進行以下設置pom.xml控制JDK用於編譯

<properties> 
    . . . 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <maven.compiler.bootclasspath>C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar${path.separator}C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar${path.separator}C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar</maven.compiler.bootclasspath> 
    . . . 
</properties> 

我們的項目是一個戰爭神器。部署完成後,應用程序服務器(在我們的例子中爲tomcat)的配置決定了應用程序服務器和應用程序運行的JVM。

(我們的環境是有點特別 - 我們使用JVM/JDK 8,但與Java 1.7兼容模式下使用它們不必遵循這個。)

+0

感謝兄弟,這個答案是我尋找的,它的工作原理。 –

+0

不客氣!我們都相互學習。 – leeyuiwah

+0

我可以問更多問題嗎?如果我想爲使用Maven創建項目設置默認的JDK 1.8,我該怎麼辦? –

1

您可以配置編譯器插件這樣:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8<target> 
    </configuration> 
</plugin> 
+0

我可以問更多問題嗎?如果我想爲使用Maven創建項目設置默認的JDK 1.8,我該怎麼辦? –