构建Spring Framework v5.2.21.RELEASE时遇ClientProtocolException错误
构建Spring Framework v5.2.21.RELEASE时遭遇401错误,需跳过文档构建并发布到本地Maven仓库
尝试按照官方文档构建Spring Framework v5.2.21.RELEASE版本,执行./gradlew pTML -PskipDocs命令时构建失败。错误显示:downloadResources任务执行失败,访问受密码保护的JFrog仓库获取spring-doc-resources时返回HTTP 401状态码,触发ClientProtocolException。需求是跳过文档构建流程,完成项目构建并发布到本地Maven仓库。
执行命令
./gradlew pTML -PskipDocs
错误日志
Starting a Gradle Daemon, 3 incompatible Daemons could not be reused, use --status for details > Task :downloadResources FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':downloadResources'. > de.undercouch.gradle.tasks.download.org.apache.http.client.ClientProtocolException: HTTP status code: 401, URL: https://repo.spring.io/release/io/spring/docresources/spring-doc-resources/0.2.1.RELEASE/spring-doc-resources-0.2.1.RELEASE.zip * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2m 39s 24 actionable tasks: 24 executed
Gradle与Java版本
项目依赖Gradle 5.6.4(该版本仅支持适配JDK 11的Groovy 2.5.4),因此使用JDK 11进行构建:
./gradlew --version输出
------------------------------------------------------------ Gradle 5.6.4 ------------------------------------------------------------ Build time: 2019-11-01 20:42:00 UTC Revision: dd870424f9bd8e195d614dc14bb140f43c22da98 Kotlin: 1.3.41 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019 JVM: 11.0.13 (Amazon.com Inc. 11.0.13+8-LTS) OS: Mac OS X 15.0.1 x86_64
java --version输出
openjdk 11.0.13 2021-10-19 LTS OpenJDK Runtime Environment Corretto-11.0.13.8.1 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM Corretto-11.0.13.8.1 (build 11.0.13+8-LTS, mixed mode)
解决方案
1. 直接排除失败的下载任务
-PskipDocs参数可能未完全禁用所有文档相关任务,尝试添加-x参数直接跳过:downloadResources任务:
./gradlew pTML -PskipDocs -x downloadResources
-x是Gradle的任务排除参数,可指定跳过特定任务。
2. 修改构建配置禁用文档任务
如果上述命令仍有问题,可修改项目根目录下的build.gradle文件,给downloadResources任务添加执行条件,当skipDocs参数存在时跳过该任务:
task downloadResources(type: Download) { onlyIf { !project.hasProperty('skipDocs') } // 保留原任务的其他配置内容 }
也可临时注释掉downloadResources任务的全部配置,直接禁用该任务。
3. 确认本地发布任务的依赖关系
若仍存在依赖问题,可查看publishToMavenLocal(即pTML)的任务依赖链:
./gradlew tasks --all
找到该任务的依赖项,确认是否需要额外排除其他文档相关的依赖任务。
内容的提问来源于stack exchange,提问作者SGT Grumpy Pants
相关产品推荐
相关产品推荐

