乐趣区

Idea基于Maven配置多JDK版本

Idea 基于 Maven 配置多 JDK 版本

1. 配置 settings.xml
2. 配置 pom.xml

3. 配置 project structure

3.1 配置 SDK
3.2 检查 Modules 相应 SDK 配置

4. 配置 Maven 插件

4.1 Maven 基本配置
4.2 配置 Maven 运行的 JDK

5. 配置编译 JDK

6. 编译打包

6.1 使用 Maven 插件
6.2 使用命令

Idea 基于 Maven 配置多 JDK 版本
如果在本地开发环境中安装了多个 JDK 版本的话,需要在 idea 中自由切换,就需要利用 Maven 进行配置,配置后就可以非常方便的进行版本切换。配置步骤如下:
1. 配置 settings.xml
在 Maven 的本地配置中,添加以下配置,配置 JAVA_HOME 和 JAVA_VERSION 两个属性。
<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 编译插件。
<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 插件。
<build>
<!– 然后,在子 pom 文件中就可以这样使用, 省去了版本、配置等信息,只需指定 groupId 和 artifactId 即可。–>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
</plugins>
</build>
以上配置详情可以参看本例项目配置。配置完成刷新一下 Maven 插件(reimport),即可展示上面所配置的 profile 列表。如下所示:

3. 配置 project structure
3.1 配置 SDK
打开 idea 中的 project structure,配置相应的 project sdk 和 project language level,配置如下(本案例采用 JDK11),

3.2 检查 Modules 相应 SDK 配置
在 Modules 中有可能会没能自动刷新相应的 sdk language level 配置,这时候就需要手动设置。

注意:经过本人现场测试,发现 idea 2018.03 版本的情况,他只能自动刷新的 language level 是 JDK1.8+ 的版本。操作方法:点击 Maven 插件中的 reimport,如下所示,

4. 配置 Maven 插件
4.1 Maven 基本配置
在 Idea 中需要配置一下 Maven settings.xml 文件和 Maven 本地仓库的位置,如果有本地安装的 Maven 也可以进行配置(没有则使用 idea 默认自带的 Maven)。file –> settings –> maven 如下所示:

4.2 配置 Maven 运行的 JDK
为了每次切换了 Project JDK 后,不需要再次进行设置可以选择 Project JDK 选项。如下所示,

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 进入设置界面。

6. 编译打包
通过以上步骤就可以利用 maven 进行编译打包的操作了。
6.1 使用 Maven 插件
如果使用 idea,则可以直接使用 maven 插件进行打包操作。如下图所示,

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

退出移动版