如何通过Azure YAML Pipeline用Gradle连接Azure Artifacts并分Feed发布构件
解决方案:Azure YAML Pipeline + Gradle 对接 Azure Artifacts
1. Pipeline YAML 配置(核心认证与任务)
无需settings.xml,通过MavenAuthenticate任务自动注入Azure Artifacts认证信息到Gradle运行环境:
trigger: - main pool: vmImage: 'ubuntu-latest' # 可根据项目需求替换为windows-latest steps: # 认证两个目标Feed,自动生成Gradle可用的认证凭据 - task: MavenAuthenticate@0 inputs: artifactsFeeds: 'GradleBinaries,CustomArtifacts' # 填写你的Feed名称,组织级Feed需加前缀如"your-org/GradleBinaries" # 执行Gradle构建/发布任务 - task: Gradle@2 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx3072m' tasks: 'build publish' # 根据需求调整任务,publish用于发布SNAPSHOT publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' javaHomeOption: 'JDKVersion' jdkVersionOption: '11' # 匹配项目JDK版本 jdkArchitectureOption: 'x64'
2. build.gradle 配置(依赖拉取+SNAPSHOT发布)
依赖拉取与缓存配置
让Gradle优先从GradleBinaries拉取依赖,缺失时从Maven中央获取,Azure Artifacts会自动缓存中央仓库依赖到GradleBinaries:
repositories { // 优先从GradleBinaries Feed拉取 maven { url 'https://pkgs.dev.azure.com/[你的组织名]/[你的项目名]/_packaging/GradleBinaries/maven/v1' name 'GradleBinaries' credentials { // 读取Pipeline注入的系统AccessToken username = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsUsername") password = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsPassword") } } // 中央仓库作为上游源,缺失依赖时从这里获取 mavenCentral() }
SNAPSHOT 发布配置
仅将SNAPSHOT构件发布到CustomArtifacts Feed:
plugins { id 'java' id 'maven-publish' // 需引入发布插件 } group = 'com.your-group-id' // 替换为你的项目GroupID version = '1.0.0-SNAPSHOT' // 确保版本带SNAPSHOT标识 publishing { publications { mavenJava(MavenPublication) { from components.java } } repositories { maven { url 'https://pkgs.dev.azure.com/[你的组织名]/[你的项目名]/_packaging/CustomArtifacts/maven/v1' name 'CustomArtifacts' credentials { username = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsUsername") password = System.getenv("SYSTEM_ACCESSTOKEN") ?: project.findProperty("azureArtifactsPassword") } // 仅发布SNAPSHOT版本到该Feed content { snapshotsOnly() } } } }
3. Azure Artifacts 上游源配置(关键步骤)
要让GradleBinaries自动缓存Maven中央仓库依赖,需为其添加上游源:
- 登录Azure DevOps,进入
GradleBinariesFeed - 点击右上角齿轮图标进入设置,选择「上游源」
- 添加上游源,选择「Maven Central」并保存
4. 权限排查
确保Pipeline服务账号(Project Collection Build Service ([组织名]))拥有:
GradleBinariesFeed的读取权限CustomArtifactsFeed的写入权限
可在Feed的「权限」设置中添加账号并分配对应权限
内容的提问来源于stack exchange,提问作者Mohd. Danish
相关产品推荐
相关产品推荐

