Idea基于Maven配置多JDK版本
如果在本地开发环境中安装了多个JDK版本的话,需要在idea中自由切换,就需要利用Maven进行配置,配置后就可以非常方便的进行版本切换。配置步骤如下:
1. 配置settings.xml
在Maven的本地配置中,添加以下配置,配置JAVA_HOME和JAVA_VERSION两个属性。
java6-compiler
C:\SoftCommon\Java\jdk1.6.0_45
1.6
java7-compiler
C:\SoftCommon\Java\jdk1.7.0_67
1.7
java8-compiler
C:\SoftCommon\Java\jdk1.8.0_202
1.8
true
java9-compiler
C:\SoftCommon\Java\jdk-9
1.9
java11-compiler
C:\SoftCommon\Java\jdk-11.0.2
11
2. 配置pom.xml
在相应的项目工程中配置pom.xml中配置如下,主要是添加一个build标签,添加maven-compiler-plugin编译插件。
UTF-8
UTF-8
${JAVA_HOME}
${JAVA_VERSION}
${JAVA_VERSION}
${JAVA_VERSION}
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
${maven.compiler.target}
128m
512m
true
${java.version}
${java.home}/bin/javac
注意:pluginmanagement主要是用于父工程(module),然后在相应的子工程(module)中添加如下配置即可加入maven-compiler-plugin插件,这样就可以让子工程决定是否加载相应的Maven插件。
org.apache.maven.plugins
maven-compiler-plugin
以上配置详情可以参看本例项目配置。配置完成刷新一下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