1. 程式人生 > >Eclipse中Maven專案執行Maven update project 專案JRE System Library變為1.5的解決辦法

Eclipse中Maven專案執行Maven update project 專案JRE System Library變為1.5的解決辦法

1:問題描述
Eclipse中的Maven專案,本地Java版本1.8,每次右擊專案--maven--update project(Alt+F5) 後,專案JRE System Library 都變為1.5。

2:異常原因
檢視Maven官網  如下:

This is a known "feature" of Maven. The default compiler source/target version is 1.5 unless you explicitly specify a version in your POM. The way Maven integration in Eclipse works, it (re)generates your .project, .classpath and .settings from the POM, so unless the POM specifies the correct JDK version, it will get reset to 1.5 every time you update the project configuration.

中文:

這是Maven已知的一個特性。除非在你的POM檔案中顯示的指定一個版本,否則會使用編譯器預設的source/target版本1.5。主要還是在於Eclipse中Maven的整合方式起到了關鍵作用, 它會從POM檔案中生成專案的.project,.classpath以及.settings, 因此除非POM檔案指定了正確的JDK版本, 否則你每次更新專案配置的時候它都會重置到1.5版本。

圖一:

編譯器外掛用來編譯專案的原始檔從3.0版本開始,用來編譯Java原始檔的預設編譯器是javax.tools.JavaCompiler (如果你是用的是java 1.6) ; 如果你想強制性的讓外掛使用javac,你必須配置外掛選項 forceJavacCompilerUse.。

圖二:

目前source選項和target 選項的預設設定都是1.5,與執行Maven時的JDK版本無關;如果你想要改變這些預設設定,,可以參考 Setting the -source and -target ofthe Java Compiler中的描述來設定 source 和target 選項。

3:解決辦法

方法一比較通用!!!

辦法一:在Maven的配置檔案setting.xml中手動指定jdk、source和target的版本

 <profiles>
     <profile>     
            <id>maven-default-jre</id>     
            <activation>     
                <activeByDefault>true</activeByDefault>     
                <jdk>1.8</jdk>     
            </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>    
 
  </profiles>


辦法二:在pom.xml檔案中手動指定source和target的jre版本

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
 
        </plugins>
    </build>
--------------------- 
原文:https://blog.csdn.net/bbc2005/article/details/78090386

 

2點小貼士:

1、project->clean

project->clean會將工程中的.class檔案刪除,同時重新編譯工程

2、maven->update project

(1)、Maven是一個專案管理工具。

(2)、update project本身是更新專案的意思。

(3)、當Maven工程被做了一些改變後(主要是結構上的改變),必須讓maven重新生成或修改相關檔案。否則eclipse將不知道變化。這時候需要執行“update project”來更新相對應的“eclipse的.classpath”檔案,來更新它,讓eclipse知道這個包是buildpath。