You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Download Package Manager仅下载Azure Artifacts中Maven最新快照WAR文件?

如何从Azure Artifacts Feeds仅下载Maven快照的最新WAR文件

我正尝试从Azure Artifacts Feeds下载Maven构件。使用Download Package Manager任务时,会下载Maven构件最新版本的所有快照WAR文件(当前已下载25个),但仅需最后发布的那一个。当前任务配置如下:

- task: DownloadPackage@1
  inputs:
    packageType: 'maven'
    feed: ''
    view: ''
    definition: ''
    version: 'latest'
    files: '*.war'
    downloadPath: '$(System.DefaultWorkingDirectory)/webapps'

下载的文件示例:

rw-r--r-- 1 svc svc 68059451 Nov 23 06:16 tmptmp-20220120.194729-41.war
-rw-r--r-- 1 svc svc 68059488 Nov 23 06:16 tmptmp-20220128.181147-53.war
-rw-r--r-- 1 svc svc 68059498 Nov 23 06:16 tmptmp-20220128.154115-45.war
-rw-r--r-- 1 svc svc 68059467 Nov 23 06:16 tmptmp-20220128.164023-47.war

解决方案

方法一:使用Maven命令拉取最新快照(推荐)

Azure的DownloadPackage@1任务会下载指定SNAPSHOT版本下的所有构件,而Maven本身可以直接拉取仓库中最新的快照构件。通过MavenAuthenticate任务处理Azure Artifacts的认证,再用dependency:get命令获取目标WAR包:

# 先认证Azure Artifacts源
- task: MavenAuthenticate@0
  inputs:
    artifactsFeeds: '你的Feed名称'

# 使用Maven拉取最新快照WAR
- task: Maven@3
  inputs:
    goals: 'dependency:get'
    options: '-DgroupId=你的构件GroupId -DartifactId=tmptmp -Dversion=你的版本号-SNAPSHOT -Dtype=war -Ddest=$(System.DefaultWorkingDirectory)/webapps/tmptmp-latest.war'
    publishJUnitResults: false

替换命令中的你的构件GroupId、你的版本号-SNAPSHOT为实际值,dest参数可以指定下载后的文件名,确保只保留最新的一个。

方法二:下载后清理旧文件(兼容原有DownloadPackage任务)

如果必须使用DownloadPackage@1,可以在下载完成后通过脚本筛选保留最新的文件。利用文件名中的时间戳(格式为YYYYMMDD.HHMMSS-序号)排序后删除旧文件:

Bash脚本示例:

- task: DownloadPackage@1
  inputs:
    packageType: 'maven'
    feed: '你的Feed名称'
    view: ''
    definition: ''
    version: 'latest'
    files: '*.war'
    downloadPath: '$(System.DefaultWorkingDirectory)/webapps'

# 清理旧快照文件,保留最新的一个
- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      cd $(System.DefaultWorkingDirectory)/webapps
      # 按文件名升序排序,跳过最后一个(最新的),删除其余文件
      ls -1v tmptmp-*.war | head -n -1 | xargs rm -f

PowerShell脚本示例:

- task: DownloadPackage@1
  inputs:
    packageType: 'maven'
    feed: '你的Feed名称'
    view: ''
    definition: ''
    version: 'latest'
    files: '*.war'
    downloadPath: '$(System.DefaultWorkingDirectory)/webapps'

# 清理旧快照文件,保留最新的一个
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $files = Get-ChildItem -Path $(System.DefaultWorkingDirectory)/webapps -Filter "tmptmp-*.war" | Sort-Object Name -Descending
      $files | Select-Object -Skip 1 | Remove-Item -Force

内容的提问来源于stack exchange,提问作者Pravallika N V L Sabbisetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:40:24