Idea基於Maven配置多JDK版本

Idea基於Maven配置多JDK版本

若是在本地開發環境中安裝了多個JDK版本的話,須要在idea中自由切換,就須要利用Maven進行配置,配置後就能夠很是方便的進行版本切換。配置步驟以下:java

1. 配置settings.xml

在Maven的本地配置中,添加如下配置,配置JAVA_HOME和JAVA_VERSION兩個屬性。git

<profiles>
    <profile>
        <id>java6-compiler</id>
        <properties>
            <JAVA_HOME>C:\SoftCommon\Java\jdk1.6.0_45</JAVA_HOME>
            <JAVA_VERSION>1.6</JAVA_VERSION>
        </properties>
    </profile>
    <profile>
        <id>java7-compiler</id>
        <properties>
            <JAVA_HOME>C:\SoftCommon\Java\jdk1.7.0_67</JAVA_HOME>
            <JAVA_VERSION>1.7</JAVA_VERSION>
        </properties>
    </profile>
    <profile>
        <id>java8-compiler</id>
        <properties>
            <JAVA_HOME>C:\SoftCommon\Java\jdk1.8.0_202</JAVA_HOME>
            <JAVA_VERSION>1.8</JAVA_VERSION>
        </properties>
        <!-- activeByDefault=true表明若是不指定某個固定id的profile,那麼就使用這個環境 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>java9-compiler</id>
        <properties>
            <JAVA_HOME>C:\SoftCommon\Java\jdk-9</JAVA_HOME>
            <JAVA_VERSION>1.9</JAVA_VERSION>
        </properties>
    </profile>
    <profile>
        <id>java11-compiler</id>
        <properties>
            <JAVA_HOME>C:\SoftCommon\Java\jdk-11.0.2</JAVA_HOME>
            <JAVA_VERSION>11</JAVA_VERSION>
        </properties>
    </profile>
</profiles>

2. 配置pom.xml

在相應的項目工程中配置pom.xml中配置以下,主要是添加一個build標籤,添加maven-compiler-plugin編譯插件。github

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.home>${JAVA_HOME}</java.home>
    <java.version>${JAVA_VERSION}</java.version>
    <maven.compiler.source>${JAVA_VERSION}</maven.compiler.source>
    <maven.compiler.target>${JAVA_VERSION}</maven.compiler.target>
</properties>
<build>
    <!--pluginmanagement標籤通常用在父pom中,子元素能夠包含plugins插件-->
    <pluginManagement>
        <plugins>
            <!-- 一個好習慣,就是在此配置JDK的版本,這樣就能夠方便代碼遷移 By Landy 2019.01.04-->
            <!--通常而言,target與source是保持一致的。可是,有時候爲了讓程序能在其餘版本的jdk中運行(對於低版本目標jdk,源代碼中須要沒有使用低版本jdk中不支持的語法),會存在target不一樣於source的狀況 。-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${maven.compiler.source}</source> <!-- 源代碼使用的開發版本 -->
                    <target>${maven.compiler.target}</target> <!-- 須要生成的目標class文件的編譯版本 -->
                    <!-- 這下面的是可選項 -->
                    <meminitial>128m</meminitial>
                    <maxmem>512m</maxmem>
                    <fork>true</fork> <!-- fork is enable,用於明確表示編譯版本配置的可用 -->
                    <compilerVersion>${java.version}</compilerVersion>
                    <!-- 這個選項用來傳遞編譯器自身不包含可是卻支持的參數選項 -->
                    <!--<compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>-->
                    <executable>${java.home}/bin/javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

注意:pluginmanagement主要是用於父工程(module),而後在相應的子工程(module)中添加以下配置便可加入maven-compiler-plugin插件,這樣就可讓子工程決定是否加載相應的Maven插件。apache

<build>
    <!--而後,在子pom文件中就能夠這樣使用,省去了版本、配置等信息,只需指定groupId和artifactId便可。-->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
    </plugins>
</build>

以上配置詳情能夠參看本例項目配置。配置完成刷新一下Maven插件(reimport),便可展現上面所配置的profile列表。以下所示:maven

Maven_Profiles

3. 配置project structure

3.1 配置SDK

打開idea中的project structure,配置相應的project sdk和project language level,配置以下(本案例採用JDK11),ide

Idea_project_structure

3.2 檢查Modules相應SDK配置

在Modules中有可能會沒能自動刷新相應的sdk language level配置,這時候就須要手動設置。測試

Sdk_language_level

注意:通過本人現場測試,發現idea 2018.03版本的狀況,他只能自動刷新的language level是JDK1.8+的版本。操做方法:點擊Maven插件中的reimport,以下所示,ui

Maven_Profiles

4. 配置Maven插件

4.1 Maven基本配置

在Idea中須要配置一下Maven settings.xml文件和Maven本地倉庫的位置,若是有本地安裝的Maven也能夠進行配置(沒有則使用idea默認自帶的Maven)。file --> settings --> maven 以下所示:idea

Maven_settings_config

4.2 配置Maven運行的JDK

爲了每次切換了Project JDK後,不須要再次進行設置能夠選擇Project JDK選項。以下所示,spa

Maven_Runner_JRE

5. 配置編譯JDK

這時候,通常狀況下,通過上面步驟,基本上就就能夠進行相應的maven編譯打包的操做了,可是有時候會遇到以下的問題,

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project xxxx Fatal error compiling: 無效的標記: -parameters -> [Help 1]

這個錯誤是因爲你項目所需jdk版本和你當前使用的jdk版本不一致致使的,由於我項目的pom.xml中定義了java版本爲11,可是我實際idea中run這個項目倒是1.8.

要是你在intellij idea裏面的maven窗口點擊的打包編譯的話,就在intellij idea設置項目jdk版本,直接Ctrl+Alt+s進入設置界面。

Java_compiler_config

6. 編譯打包

經過以上步驟就能夠利用maven進行編譯打包的操做了。

6.1 使用Maven插件

若是使用idea,則能夠直接使用maven插件進行打包操做。以下圖所示,

Maven_compile_package

6.2 使用命令

若是使用Maven命令,以下所示,

mvn -s D:\mvn_repository\settings.xml clean package -P java11-compiler

java11-compiler即爲上面配置的jdk版本的profile id,而且須要制定相應的settings文件便可。

關於本人

筆者Github連接: https://github.com/landy8530

相關文章
相關標籤/搜索