[英]Output Variable in Maven Task Azure Pipeline
我在 azure 管道中有一個 maven 任務,我想在其中獲得一個值為 VAR 的 output 變量:${{ contains($(Build.ArtifactStagingDirectory)/*.jar, 'SNAPSHOT')}} 這樣我就可以使用它一旦這個任務成功結束,在同一個工作和同一個階段的另一個任務中變量。 如果我試圖將設置變量屬性與腳本一起使用,它會給我錯誤提示“意外的屬性腳本”,如下所示:
- task: Maven@4
displayName: 'XYZ'
inputs:
.
.
.
script:
在 maven 任務中設置變量的正確方法是什么? 或者我們如何在azure管道中獲取任務的output?
首先, contain或 containvalue 是條件表達式。 您不應該直接通過 VAR 獲得判斷值“真或假”: ${{ containsValue($(Build.ArtifactStagingDirectory)/ .jar, 'SNAPSHOT')}} 或 contains($(Build.ArtifactStagingDirectory)/ 。 jar, '快照')
如果您直接將變量 VAR0 設置為值“$(Build.ArtifactStagingDirectory)/. jar”,您將獲得 output 作為“D:\a\1\a/TestResultsTests/ .jar”。 您可以在 $(Build.ArtifactStagingDirectory) 下列出文件,但不能 output 用其他字符串或值來判斷它的值。
如果你想使用 maven 任務來生成並推送像 ' .jar' 的文件到 $(Build.ArtifactStagingDirectory) 並比較文件名是否包含 'SNAPSHOT',那么你可能不能因為我們無法獲取 '$ (Build.ArtifactStagingDirectory)/ .jar'。
供您參考,如果您想比較從上一個任務生成的變量 var1 值,您可以使用 powershell 任務來查看該值:
steps:
- powershell: |
echo "hello world"
displayName: 'PowerShell Script'
condition: containsValue(variables.var1, '123')
由於如果值為 false 它將跳過,如果值為 true 則運行,您可以嘗試在以下任務中使用成功或失敗條件並將變量設置為相應的值然后 output 變量值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.