如何解决STS中SpringBoot构建报错CoreException:无法获取compilerId参数值
STS构建SpringBoot项目Maven编译异常解决方案
问题描述
在STS中构建SpringBoot项目时出现两个Maven构建异常,对应POM文件和报错信息如下:
POM.xml文件内容
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ducat.springboot.mongodb</groupId> <artifactId>Ideas</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Ideas Maven Webapp</name> <url>http://maven.apache.org</url> <!-- spring boot parent dependency jar --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> </dependencies> <build> <finalName>Ideas App</finalName> </build> </project>
报错信息
- 错误1:CoreException: 插件执行default-compile时无法获取参数compilerId的值:PluginResolutionException: 插件org.apache.maven.plugins:maven-compiler-plugin:3.8.0或其某一依赖无法解析:无法收集org.apache.maven.plugins:maven-compiler-plugin:jar:3.8.0 -> org.apache.maven.shared:maven-shared-incremental:jar:1.1 -> org.apache.maven:maven-core:jar:2.2.1 -> org.apache.maven:maven-project:jar:2.2.1 -> org.apache.maven:maven-artifact-manager:jar:2.2.1 -> backport-util-concurrent:backport-util-concurrent:jar:3.1的依赖:ArtifactDescriptorException: 无法读取backport-util-concurrent:backport-util-concurrent:jar:3.1的构件描述符:ArtifactResolutionException: 从https://repo.maven.apache.org/maven2下载backport-util-concurrent:backport-util-concurrent:pom:3.1失败的记录已缓存在本地仓库,central仓库更新间隔到期或强制更新前不会重试解析。原始错误:无法从central仓库(https://repo.maven.apache.org/maven2)传输构件backport-util-concurrent:backport-util-concurrent:pom:3.1:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: 无法找到指向请求目标的有效证书路径
- 错误2:生命周期配置未覆盖插件执行:org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile(执行: default-compile, 阶段: compile)
解决方案
第一步:解决依赖下载失败与PKIX证书问题
- 强制更新Maven依赖:在STS中右键对应项目 → 选择
Maven→ 选择Update Project→ 勾选Force Update of Snapshots/Releases,点击确认执行更新。 - 清理本地缓存的失败包:如果强制更新后仍报错,找到本地Maven仓库的存储路径,删除
backport-util-concurrent相关的所有文件夹,再次执行强制更新。 - 处理PKIX证书错误:如果还是提示证书路径问题,是当前网络环境(如公司内网代理、防火墙)篡改了Maven中央库的SSL证书,可直接将Maven源替换为国内镜像,在Maven的
settings.xml配置文件的<mirrors>节点中加入以下配置:
<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
第二步:解决Maven生命周期映射问题
在项目pom.xml的<build>节点中显式声明maven-compiler-plugin的配置,匹配当前使用的Java 1.8版本,修改后的<build>节点内容如下:
<build> <finalName>Ideas App</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerId>javac</compilerId> </configuration> </plugin> </plugins> </build>
完成上述配置后再次执行Maven更新和项目构建即可解决问题。
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

