我正在尝试通过 Jenkins 构建一个项目,但我不断收到此错误:
[错误]执行目标失败 org.apache.maven.plugins:maven-compiler-plugin:3.8.1:编译 (默认编译)在项目 my-project 上:编译致命错误:错误: 无效目标版本:17 -> [帮助 1]
我尝试在 pom.xml 中分配源版本和目标版本,但行不通。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<target>17</target>
<source>17</source>
</configuration>
</plugin>
mvn --版本输出:
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2022.3.3\plugins\maven\lib\maven3
Java version: 17.0.8, vendor: Eclipse Adoptium, runtime: C:\Program Files\Eclipse Adoptium\jdk-17.0.8.7-hotspot
Default locale: en_US, platform encoding: UTF-8
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
事实上,如果我将版本的源和目标指定为 1.8,它将正确构建,但该项目使用的是 Java 17。
<java.version>17</java.version>
我还可以尝试其他哪些修复方法来使其发挥作用?
我认为带有 maven-compiler-plugin 的 java 8 和带有 maven-compiler-plugin 的 java 17 的配置是不同的定义方式。
对于java 8及更低版本如下,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
对于java 9+版本,配置如下,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<release>8</release>
</configuration>
</plugin>
参考资料: