如何在Azure DevOps流水线中使用PublishBuildArtifacts@1发布Jar包?
Azure DevOps 发布Jar文件到工件源配置指南
一、先确保Jar文件已生成到工件暂存目录
PublishBuildArtifacts@1任务只会发布指定路径下的文件,所以首先得把构建好的Jar文件放到$(Build.ArtifactStagingDirectory)这个系统预设目录里:
- 如果是Maven项目,在打包任务后添加复制文件步骤:
- task: CopyFiles@2 inputs: sourceFolder: '$(System.DefaultWorkingDirectory)/target' # Maven默认Jar生成目录 contents: '*.jar' # 匹配所有Jar文件 targetFolder: '$(Build.ArtifactStagingDirectory)' - 如果是Gradle项目,将
sourceFolder调整为$(System.DefaultWorkingDirectory)/build/libs即可。
二、配置PublishBuildArtifacts@1任务
基于你查到的示例,结合Jar文件场景的完整配置如下:
- task: PublishBuildArtifacts@1 inputs: pathToPublish: '$(Build.ArtifactStagingDirectory)' # 指定发布目录 artifactName: 'MyJarArtifacts' # 自定义工件名称,方便后续识别 publishLocation: 'Container' # 默认值,发布到当前项目的Azure DevOps工件容器
核心参数说明:
pathToPublish:必须指向存放Jar的目录,使用系统变量$(Build.ArtifactStagingDirectory)是最佳实践,避免硬编码路径。artifactName:自定义工件名称,后续在Azure DevOps的「工件」页面可直接看到该名称。publishLocation:默认Container即发布到当前项目的Azure DevOps工件源,无需额外配置。
三、完整流水线示例(以Maven项目为例)
trigger: - main # 触发分支,根据你的项目调整 pool: vmImage: 'ubuntu-latest' # 也可选择windows-latest steps: # Step 1: Maven打包生成Jar - task: Maven@3 inputs: mavenPomFile: 'pom.xml' goals: 'package' publishJUnitResults: false jdkVersionOption: '1.8' # 匹配你的项目JDK版本 mavenVersionOption: 'Default' # Step 2: 复制Jar到暂存目录 - task: CopyFiles@2 inputs: sourceFolder: '$(System.DefaultWorkingDirectory)/target' contents: '*.jar' targetFolder: '$(Build.ArtifactStagingDirectory)' # Step 3: 发布Jar到工件源 - task: PublishBuildArtifacts@1 inputs: pathToPublish: '$(Build.ArtifactStagingDirectory)' artifactName: 'MyJarArtifacts'
四、经典编辑器(可视化界面)配置方式
如果不用YAML,通过可视化界面操作:
- 在流水线编辑页点击「+」添加任务,搜索「Publish Build Artifacts」并选择版本1的任务。
- 在任务配置面板:
- 「Path to publish」填写
$(Build.ArtifactStagingDirectory) - 「Artifact name」填写自定义名称(如
MyJarArtifacts) - 「Publish location」保持默认「Azure Pipelines」即可。
- 「Path to publish」填写
- 需提前添加「Copy Files」任务:搜索「Copy Files」,配置源文件夹为Jar生成目录(如Maven的
$(System.DefaultWorkingDirectory)/target),目标文件夹为$(Build.ArtifactStagingDirectory),匹配规则填*.jar。
发布完成后,可在Azure DevOps项目的「流水线」→「工件」页面找到发布的Jar文件。
内容的提问来源于stack exchange,提问作者user2835387
相关产品推荐
相关产品推荐

