如何在后续任务中获取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如果指定任务成功完成,否则falsefailed('TaskName'):返回true如果指定任务失败,否则falsecanceled('TaskName'):返回true如果指定任务被取消,否则falsesucceededOrFailed('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
相关产品推荐
相关产品推荐

