如何在Bitbucket配置Java 11 Spring Boot流水线?解决编译版本错误
这个报错[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project sms-commons: Fatal error compiling: invalid target release: 11的核心原因很明确:你当前使用的maven:3.3.9镜像默认搭载的是Java 8版本,但你的项目需要用Java 11编译,版本不匹配导致了编译失败。
下面是两种可行的解决方案,推荐第一种更简洁的方式:
方案1:更换支持Java 11的Maven镜像(推荐)
Maven官方提供了绑定不同OpenJDK版本的镜像,你只需要把image字段替换为一个搭载Java 11的Maven镜像即可。比如选择maven:3.8.6-openjdk-11(这个组合中Maven 3.8.6完全兼容Java 11)。
修改后的bitbucket-pipelines.yml配置如下:
image: maven:3.8.6-openjdk-11 pipelines: default: - step: caches: - maven script: - mvn -B verify # -B batch mode makes Maven less verbose - mvn clean install
注意:你也可以选择其他兼容的镜像,比如maven:3.9.5-openjdk-11,只要确保Maven版本和Java 11兼容即可(Maven 3.6.0及以上版本都支持Java 11)。
方案2:在原有镜像中安装并切换到Java 11(不推荐,仅作备选)
如果因为某些原因必须使用maven:3.3.9镜像,你可以在构建脚本中手动安装Java 11,并设置为默认版本。修改后的script部分如下:
image: maven:3.3.9 pipelines: default: - step: caches: - maven script: # 安装Java 11 - apt-get update && apt-get install -y openjdk-11-jdk # 切换默认Java版本为11 - update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java - update-alternatives --set javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac # 验证Java版本 - java -version - javac -version # 执行构建命令 - mvn -B verify - mvn clean install
额外检查
请确认你的项目pom.xml中,maven-compiler-plugin的配置已经正确指定了Java 11的source和target版本(你的报错已经显示插件在尝试用11编译,这一步大概率没问题,但可以再确认):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者Tristate

