問題與分析
最近遇到個奇怪的問題,在Eclipse里對一個Maven項目進行Update Project(快捷鍵是 Alt+F5
),原本jdk為1.8的項目忽然就變成了1.5,於是就報了一些錯誤。
我猜想可能跟Maven默認的jdk版本有關系,百度了下,確實如此,Maven項目如果不指定編譯的jdk版本,就會默認為jdk1.5。查了下項目的pom文件,里邊並沒有指定編譯的jdk版本,而Maven的配置文件settings.xml里也沒有指明jdk版本,所以當我Update Project后,這個Maven項目就會自動變成jdk1.5了。
解決方法
有兩種解決方法,一種是針對某個Maven項目而言,直接在pom文件中指明jdk版本;一種是全局設置,為所有Maven項目指明jdk版本。
在pom文件中指明jdk版本
在項目的pom.xml中的build節點里使用maven的編譯插件來指定jdk版本,項目中通常使用這種方法來指定,因為比較靈活,可以隨意指定版本,修改保存后即可生效。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
修改settings.xml文件
找到Maven的安裝路徑,打開conf\settings.xml
,找到profiles
節點,在該節點下添加一個profile
節點:
<profile>
<id>jdk-1.8</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
使用這種方法的好處是所有Maven項目都會按照這里的jdk版本來編譯,當然如果在pom文件里也指定了jdk版本,則以pom里的為准。這種全局修改的方法必須要重啟Eclipse才有效果。
個人建議就算是修改了全局配置,也要在每個Maven項目里指明jdk版本,這是種良好的規范,利於別人理解。