总结:这是编译器的版本问题。

情形1

新建maven项目,jdk选9 , pom如下

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>example-project</artifactId>
    <version>1.0-SNAPSHOT</version>

执行mvn install 会报错:

第一行:标题所示错误
第二行:[ERROR] Source option 1.5 is no longer supported. Use 1.6 or later.
[ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.

解决:

pom中添加:

<properties>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

情形2

改jdk为11.02,pom中保留版本的修改。mvn install仍然报错:

第一行:标题所示错误
第二行:没有多余信息

terminal里执行 mvn install -e

得到多余的错误信息:invalid target release 11.0.2 ,说明是结尾的小版本号不受支持。所以不用$变量,直接写死11

再运行success 

以上2种方法,都是在项目pom中设置。也可以不在项目里写,而统一在maven全局配置文件setting里profile字段下面设置jdk版本。

[Maven] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin_maven

但是,当setting里设置9 ,而项目里用properties设置11 ,源码里出现11新语法时比如var,idea会飘红cannot resolve symbol,mvn install 也会报错cannot find symbol 如果你只飘红没有install报错,那你试试改动源码也许就会报错了。解决方法是使用 “编译器插件”插件版本不一定用下面的381

不要properties部分
在build -> plugins标签下:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>11</source>
        <target>11</target>
        <encoding>UTF-8</encoding>
        <showWarnings>true</showWarnings>
    </configuration>
</plugin>

总结:maven默认用jdk1.5编译,无论本地jdk版本多少,mvn中要明确写出编译的版本。