Jenkins运行Maven项目报maven-compiler-plugin 403访问禁止错误如何解决
问题错误日志
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project my-project: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile failed: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.8.0 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-compiler-plugin:jar:3.8.0 -> org.codehaus.groovy:groovy-eclipse-compiler:pom:3.0.0-01: Failed to read artifact descriptor for org.codehaus.groovy:groovy-eclipse-compiler:pom:3.0.0-01: Could not transfer artifact org.codehaus.groovy:groovy-eclipse-compiler:pom:3.0.0-01 from/to bintray (https://dl.bintray.com/groovy/maven): Authorization failed for https://dl.bintray.com/groovy/maven/org/codehaus/groovy/groovy-eclipse-compiler/3.0.0-01/groovy-eclipse-compiler-3.0.0-01.pom 403 Forbidden -> [Help 1]
故障诱因
- 核心原因:JFrog官方已于2021年5月1日全面关停Bintray、JCenter等公共镜像服务,原配置中
https://dl.bintray.com/groovy/maven仓库地址已废弃,访问直接返回403禁止响应 - 版本依赖问题:当前项目使用的
maven-compiler-plugin:3.8.0依赖groovy-eclipse-compiler:3.0.0-01组件,该版本组件未同步至Maven中央仓库,只能从Groovy官方合规仓库拉取 - 缓存失效问题:若此前构建正常突然报错,大概率是Jenkins节点的Maven本地缓存中该组件的缓存已过期,触发重新拉取时请求了废弃的仓库地址
解决方案
方案一:替换Groovy仓库地址(推荐)
修改项目pom.xml或Jenkins节点全局settings.xml配置,将原Bintray Groovy仓库替换为Maven中央仓库对应的Groovy组件地址即可:
<repository> <id>groovy-maven</id> <url>https://repo1.maven.org/maven2/org/codehaus/groovy/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository>
方案二:升级maven-compiler-plugin版本
将项目中maven-compiler-plugin升级至3.8.1及以上版本,新版本已移除对groovy-eclipse-compiler:3.0.0-01的依赖,无需额外配置仓库即可完成构建:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> </plugin>
方案三:私有仓库兜底
如果暂时无法修改项目pom配置,可将groovy-eclipse-compiler:3.0.0-01相关包手动上传至企业私有Maven镜像仓库,修改Jenkins节点Maven配置指向私有仓库即可正常拉取。
内容的提问来源于stack exchange,提问作者Georgi Georgiev
相关产品推荐
相关产品推荐

