Azure Pipelines中Gradle@2构建Release任务失败求助
Azure Pipelines Gradle构建依赖缺失排查方案
核心排查步骤
由于本地构建完全正常,问题集中在CI环境的依赖获取环节,可按以下方向逐一验证:
检查GitHub Packages访问权限与认证
- 确认Azure Pipelines代理(托管/自托管)能访问
https://maven.pkg.github.com/DantSu,企业环境可能存在防火墙拦截外部仓库 - 本地
~/.gradle/gradle.properties可能已配置GitHub认证token,但CI环境未同步:需在Pipeline中设置GITHUB_ACTOR和GITHUB_TOKEN环境变量,且token需具备GitHub Packages读取权限 - 在Gradle任务中添加
--info参数(修改pipeline.yml的arguments为assembleRelease --info),查看依赖解析的详细日志,定位是否为认证失败导致拉取失败
- 确认Azure Pipelines代理(托管/自托管)能访问
清理CI环境的Gradle缓存
- CI缓存可能保留了无效的依赖状态,在Gradle任务前添加清理脚本:
- Linux代理:
rm -rf ~/.gradle/caches/modules-2/files-2.1/com.github.DantSu - Windows代理:
Remove-Item -Recurse -Force $env:USERPROFILE\.gradle\caches\modules-2\files-2.1\com.github.DantSu
- Linux代理:
- 临时禁用Gradle缓存测试:在任务arguments中加入
--no-build-cache --no-configure-on-demand
- CI缓存可能保留了无效的依赖状态,在Gradle任务前添加清理脚本:
验证代理节点网络连通性
- 在Pipeline中添加前置脚本任务,执行
curl -v https://maven.pkg.github.com/DantSu/ESCPOS-ThermalPrinter-Android/com/github/DantSu/ESCPOS-ThermalPrinter-Android/3.2.1/ESCPOS-ThermalPrinter-Android-3.2.1.pom,检查是否能正常获取POM文件 - 自托管代理需确认机器网络是否新增防火墙规则限制GitHub访问
- 在Pipeline中添加前置脚本任务,执行
核对仓库配置正确性
- 确认项目
build.gradle中GitHub仓库配置完整:repositories { maven { url = uri("https://maven.pkg.github.com/DantSu") credentials { username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR") password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN") } } } - 检查Pipeline环境变量是否正确传递给Gradle,避免变量名拼写错误
- 确认项目
临时替换依赖源验证
- 若上述步骤无效,尝试切换依赖源至JitPack(若支持):修改依赖声明为
com.github.DantSu:ESCPOS-ThermalPrinter-Android:3.2.1并添加JitPack仓库,验证CI是否能正常构建,以此排除GitHub仓库本身的问题
- 若上述步骤无效,尝试切换依赖源至JitPack(若支持):修改依赖声明为
内容的提问来源于stack exchange,提问作者SVG
相关产品推荐
相关产品推荐

