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

如何在后续任务中获取Maven@3测试任务的运行状态?

获取Maven任务的运行状态

当然可以实现!你已经找对了方向,Azure Pipelines 提供了内置的状态检查函数,能轻松获取指定任务的运行状态,你用到的 succeeded('任务名称') 就是最常用的一个。

核心实现方式

你只需要给目标Maven任务设置唯一的name属性,然后在后续任务中使用内置函数来查询它的状态。这里给你完善后的示例:

- task: Maven@3
  displayName: UnitTest
  name: UnitTest  # 必须设置这个name,作为任务的唯一标识
  inputs:
    mavenPomFile: 'pom.xml'  # 替换成你的实际配置
    goals: 'test'
    # 其他Maven配置项...

- script: |
    # 打印UnitTest任务的各种状态
    echo "UnitTest任务是否成功: $(succeeded('UnitTest'))"
    echo "UnitTest任务是否失败: $(failed('UnitTest'))"
    echo "UnitTest任务是否被取消: $(canceled('UnitTest'))"
    echo "UnitTest任务已完成(成功/失败): $(succeededOrFailed('UnitTest'))"
  displayName: 检查UnitTest任务运行状态

常用状态函数说明

除了你用到的succeeded,还有几个实用的内置函数:

  • succeeded('TaskName'):返回true如果指定任务成功完成,否则false
  • failed('TaskName'):返回true如果指定任务失败,否则false
  • canceled('TaskName'):返回true如果指定任务被取消,否则false
  • succeededOrFailed('TaskName'):返回true如果指定任务已完成(不管成功还是失败),仅当任务被取消时返回false

额外技巧:基于任务状态执行后续操作

你还可以用这些函数来控制后续任务的执行条件,比如只有当UnitTest成功时才发布测试报告:

- task: PublishTestResults@2
  displayName: 发布单元测试结果
  condition: succeeded('UnitTest')  # 仅当UnitTest成功时运行此任务
  inputs:
    testResultsFiles: '**/surefire-reports/*.xml'
    testRunTitle: 'Unit Test Results'

注意事项

  • 一定要给目标任务设置name属性,并且保证这个名称在整个管道中是唯一的,否则函数无法准确定位到目标任务
  • 这些状态函数属于Azure Pipelines的内置表达式,只能在管道的表达式上下文(比如script命令、condition属性等)中使用

内容的提问来源于stack exchange,提问作者victor gallet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:53:11