idea使用maven toolchain编译失败的问题

2020-09-04  本文已影响0人  捞月亮的阿汤哥

问题描述

  1. 从github上下载了一个项目redis-replicator, 项目用到了maven toolchain,同时代码中用到了java9的module语法
  2. 然后直接使用idea进行编译,编译失败(即使修改项目的jdk版本也不行),错误提示如下


    截屏2020-09-04 上午11.37.51.png
  3. 报错时候的配置:
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

解决

  1. 修改项目的toolchains.xml, 写入你的jdk1.8和jdk9(jdk9才支持module语法)之后的地址,比如我的配置如下:


    截屏2020-09-04 上午11.39.49.png

    备注: 我是使用brew安装的,同时安装了1.8和11的;另外发行版的vendor信息可以通过java -XshowSettings:properties -version进行查看

  2. 将toolchains.xml拷贝到/.m2/toolchains.xml
    备注: 到这一步,你使用mvn进行编译的话,已经不会报错了,但是idea还是不支持(错误和上面截图一样)
    这个的原理简单来说就是编译了两次,第一次使用jdk9编译,然后使用java_home的jdk进行编译,多版本jdk maven compile说明
    截屏2020-09-04 上午11.45.58.png
  3. 修改项目的jdk版本
    工具栏右上角Project Structure点击进入


    截屏2020-09-04 上午11.48.34.png
  4. 修改pom文件的jdk版本,并重新reload
<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
  1. 然后点击idea右上角的build🔨按钮就可以成功了

注意点 ⚠️

因为JAVA_HOME使用的是jdk1.8的,这样改了之后如果要使用maven编译打包的话,还是要把maven.compiler.source的版本和maven.compiler.target的版本改成JAVA_HOME的jdk版本,比如我的是1.8,不然build还是会报错


截屏2020-09-04 下午1.52.10.png

toolchain的编译示意图

maven toolchain.png
上一篇 下一篇

猜你喜欢

热点阅读