共用方式為


Gradle@3 - Gradle v3 任務

使用此工作來建置使用 Gradle 包裝函式腳本。

語法

# Gradle v3
# Build using a Gradle wrapper script.
- task: Gradle@3
  inputs:
    gradleWrapperFile: 'gradlew' # string. Alias: wrapperScript. Required. Gradle wrapper. Default: gradlew.
    #workingDirectory: # string. Alias: cwd. Working directory. 
    #options: # string. Options. 
    tasks: 'build' # string. Required. Tasks. Default: build.
  # JUnit Test Results
    #publishJUnitResults: true # boolean. Publish to Azure Pipelines. Default: true.
    testResultsFiles: '**/TEST-*.xml' # string. Required when publishJUnitResults = true. Test results files. Default: **/TEST-*.xml.
    #testRunTitle: # string. Optional. Use when publishJUnitResults = true. Test run title. 
  # Code Coverage
    #codeCoverageToolOption: 'None' # 'None' | 'Cobertura' | 'JaCoCo'. Alias: codeCoverageTool. Code coverage tool. Default: None.
    codeCoverageClassFilesDirectories: 'build/classes/main/' # string. Alias: classFilesDirectories. Required when codeCoverageTool != None. Class files directories. Default: build/classes/main/.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageTool != None. Class inclusion/exclusion filters. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageTool != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageGradle5xOrHigher: true # boolean. Alias: gradle5xOrHigher. Optional. Use when codeCoverageTool = JaCoCo. Gradle version >= 5.x. Default: true.
  # Advanced
    javaHomeOption: 'JDKVersion' # 'JDKVersion' | 'Path'. Alias: javaHomeSelection. Required. Set JAVA_HOME by. Default: JDKVersion.
    #jdkVersionOption: 'default' # 'default' | '1.17' | '1.11' | '1.10' | '1.9' | '1.8' | '1.7' | '1.6'. Alias: jdkVersion. Optional. Use when javaHomeSelection = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeSelection = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64'. Alias: jdkArchitecture. Optional. Use when jdkVersion != default. JDK architecture. Default: x64.
    #gradleOptions: '-Xmx1024m' # string. Alias: gradleOpts. Set GRADLE_OPTS. Default: -Xmx1024m.
  # Code Analysis
    #sonarQubeRunAnalysis: false # boolean. Alias: sqAnalysisEnabled. Run SonarQube or SonarCloud Analysis. Default: false.
    #sqGradlePluginVersionChoice: 'specify' # 'specify' | 'build'. Required when sqAnalysisEnabled = true. SonarQube scanner for Gradle version. Default: specify.
    #sonarQubeGradlePluginVersion: '2.6.1' # string. Alias: sqGradlePluginVersion. Required when sqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify. SonarQube scanner for Gradle plugin version. Default: 2.6.1.
    #checkStyleRunAnalysis: false # boolean. Alias: checkstyleAnalysisEnabled. Run Checkstyle. Default: false.
    #findBugsRunAnalysis: false # boolean. Alias: findbugsAnalysisEnabled. Run FindBugs. Default: false.
    #pmdRunAnalysis: false # boolean. Alias: pmdAnalysisEnabled. Run PMD. Default: false.
    #spotBugsAnalysis: false # boolean. Alias: spotBugsAnalysisEnabled. Run SpotBugs. Default: false.
    #spotBugsGradlePluginVersionChoice: 'specify' # 'specify' | 'build'. Required when spotBugsAnalysisEnabled = true. Spotbugs plugin version. Default: specify.
    #spotbugsGradlePluginVersion: '4.7.0' # string. Required when spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify. Version number. Default: 4.7.0.
# Gradle v3
# Build using a Gradle wrapper script.
- task: Gradle@3
  inputs:
    gradleWrapperFile: 'gradlew' # string. Alias: wrapperScript. Required. Gradle wrapper. Default: gradlew.
    #workingDirectory: # string. Alias: cwd. Working directory. 
    #options: # string. Options. 
    tasks: 'build' # string. Required. Tasks. Default: build.
  # JUnit Test Results
    #publishJUnitResults: true # boolean. Publish to Azure Pipelines. Default: true.
    testResultsFiles: '**/TEST-*.xml' # string. Required when publishJUnitResults = true. Test results files. Default: **/TEST-*.xml.
    #testRunTitle: # string. Optional. Use when publishJUnitResults = true. Test run title. 
  # Code Coverage
    #codeCoverageToolOption: 'None' # 'None' | 'Cobertura' | 'JaCoCo'. Alias: codeCoverageTool. Code coverage tool. Default: None.
    codeCoverageClassFilesDirectories: 'build/classes/main/' # string. Alias: classFilesDirectories. Required when codeCoverageTool != None. Class files directories. Default: build/classes/main/.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageTool != None. Class inclusion/exclusion filters. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageTool != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageGradle5xOrHigher: true # boolean. Alias: gradle5xOrHigher. Optional. Use when codeCoverageTool = JaCoCo. Gradle version >= 5.x. Default: true.
  # Advanced
    javaHomeOption: 'JDKVersion' # 'JDKVersion' | 'Path'. Alias: javaHomeSelection. Required. Set JAVA_HOME by. Default: JDKVersion.
    #jdkVersionOption: 'default' # 'default' | '1.11' | '1.10' | '1.9' | '1.8' | '1.7' | '1.6'. Alias: jdkVersion. Optional. Use when javaHomeSelection = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeSelection = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64'. Alias: jdkArchitecture. Optional. Use when jdkVersion != default. JDK architecture. Default: x64.
    #gradleOptions: '-Xmx1024m' # string. Alias: gradleOpts. Set GRADLE_OPTS. Default: -Xmx1024m.
  # Code Analysis
    #sonarQubeRunAnalysis: false # boolean. Alias: sqAnalysisEnabled. Run SonarQube or SonarCloud Analysis. Default: false.
    #sqGradlePluginVersionChoice: 'specify' # 'specify' | 'build'. Required when sqAnalysisEnabled = true. SonarQube scanner for Gradle version. Default: specify.
    #sonarQubeGradlePluginVersion: '2.6.1' # string. Alias: sqGradlePluginVersion. Required when sqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify. SonarQube scanner for Gradle plugin version. Default: 2.6.1.
    #checkStyleRunAnalysis: false # boolean. Alias: checkstyleAnalysisEnabled. Run Checkstyle. Default: false.
    #findBugsRunAnalysis: false # boolean. Alias: findbugsAnalysisEnabled. Run FindBugs. Default: false.
    #pmdRunAnalysis: false # boolean. Alias: pmdAnalysisEnabled. Run PMD. Default: false.
    #spotBugsAnalysis: false # boolean. Alias: spotBugsAnalysisEnabled. Run SpotBugs. Default: false.
    #spotBugsGradlePluginVersionChoice: 'specify' # 'specify' | 'build'. Required when spotBugsAnalysisEnabled = true. Spotbugs plugin version. Default: specify.
    #spotbugsGradlePluginVersion: '4.7.0' # string. Required when spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify. Version number. Default: 4.7.0.

輸入

gradleWrapperFile - Gradle 包裝函式
輸入別名wrapperScriptstring。 必須的。 預設值: gradlew

指定將用於組建的存放庫內 gradlew 包裝函式的位置。 Windows 上的代理程式(包括Microsoft裝載的代理程式)必須使用 gradlew.bat 包裝函式。 Linux 或 macOS 上的代理程式可以使用 gradlew 殼層腳本。 深入瞭解 Gradle 包裝函式。 如果 Gradle 包裝函式不在根目錄中,請指定包裝函式腳本的路徑。 例如: subdir/gradlew


workingDirectory - 工作目錄
輸入別名cwdstring

指定要執行 Gradle 組建的工作目錄。 如果未指定工作目錄,工作會使用存放庫根目錄。


options - 選項
string

指定將傳遞至 Gradle 包裝函式的命令行選項。 如需詳細資訊,請參閱 Gradle 命令行


tasks - 工作
string。 必須的。 預設值: build

要執行之 Gradle 的工作。。 工作名稱清單應該以空格分隔,而且可以從命令提示字元發出的 gradlew tasks 取得。

如需詳細資訊,請參閱 Gradle Build Script Basics


publishJUnitResults - 發佈至 Azure Pipelines
boolean。 預設值: true

將 Gradle 組建所產生的 JUnit 測試結果發佈至 Azure Pipelines。 工作會將每個測試結果檔案發佈 Test Results Files 作為 Azure Pipelines 中的測試回合。


testResultsFiles - 測試結果檔案
stringpublishJUnitResults = true時為必要項。 預設值: **/TEST-*.xml

測試結果的檔案路徑。 通配符 可以使用。 例如,針對名稱開頭為 **/TEST-*.xml的所有 XML 檔案 TEST-


testRunTitle - 測試回合標題
string。 選擇性。 publishJUnitResults = true時使用 。

提供此組建之 JUnit 測試結果的名稱。


codeCoverageToolOption - 程式代碼涵蓋範圍工具
輸入別名codeCoverageToolstring。 允許的值:NoneCoberturaJaCoCo。 預設值: None

指定程式代碼涵蓋範圍工具,以判斷組建測試案例所涵蓋的程序代碼。


codeCoverageClassFilesDirectories - 類別檔案目錄
輸入別名classFilesDirectoriesstringcodeCoverageTool != None時為必要項。 預設值: build/classes/main/

包含類別檔案和封存盤案的目錄逗號分隔清單(.jar、.war 等等)。 這些目錄中的類別檔案會報告程式代碼涵蓋範圍。 一般而言,工作會在 build/classes/java/main 下搜尋類別(針對 Gradle 4+),這是 Gradle 組建的預設類別目錄。


codeCoverageClassFilter - 類別包含/排除篩選條件
輸入別名classFilterstring。 選擇性。 codeCoverageTool != None時使用 。

要包含或排除類別的逗號分隔篩選清單,無法收集程式代碼涵蓋範圍。 例如:+:com.*+:org.*-:my.app*.*


codeCoverageFailIfEmpty - 遺失程式代碼涵蓋範圍結果時失敗
輸入別名failIfCoverageEmptyboolean。 選擇性。 codeCoverageTool != None時使用 。 預設值: false

如果程式代碼涵蓋範圍未產生任何要發佈的結果,則組建會失敗。


codeCoverageGradle5xOrHigher - Gradle 版本 >= 5.x
輸入別名gradle5xOrHigherboolean。 選擇性。 codeCoverageTool = JaCoCo時使用 。 預設值: true

如果 gradle 版本 >= 5.x,請將此設定為 'true'。


javaHomeOption - 設定JAVA_HOME
輸入別名javaHomeSelectionstring。 必須的。 允許的值:JDKVersion (JDK 版本),Path。 預設值: JDKVersion

選取工作在建置期間探索的 JDK 版本,或手動輸入 JDK 路徑,來設定JAVA_HOME。


jdkVersionOption - JDK 版本
輸入別名jdkVersionstring。 選擇性。 javaHomeSelection = JDKVersion時使用 。 允許的值:default1.17(JDK 17)、1.11(JDK 11)、1.10(不支援的 JDK 10)、1.9(不支援 JDK 9(不支援))、1.8 (JDK 8)、1.7 (JDK 7)、1.6 (JDK 6 (不支援))。 預設值: default

嘗試探索所選 JDK 版本的路徑,並據以設定JAVA_HOME。


jdkVersionOption - JDK 版本
輸入別名jdkVersionstring。 選擇性。 javaHomeSelection = JDKVersion時使用 。 允許的值為:default1.11 (JDK 11)、1.10 (JDK 10 (不支援))、1.9 (JDK 9 (不支援))、1.8 (JDK 8)、1.7 (JDK 7)、1.6 (不支援 6 (不支援 JDK 6))。 預設值: default

嘗試探索所選 JDK 版本的路徑,並據以設定JAVA_HOME。


jdkDirectory - JDK 路徑
輸入別名jdkUserInputPathstringjavaHomeSelection = Path時為必要項。

將JAVA_HOME設定為指定的路徑。


jdkArchitectureOption - JDK 架構
輸入別名jdkArchitecturestring。 選擇性。 jdkVersion != default時使用 。 允許的值:x86x64。 預設值: x64

提供 JDK 架構 (x86 或 x64)。


gradleOptions - 設定GRADLE_OPTS
輸入別名gradleOptsstring。 預設值: -Xmx1024m

設定GRADLE_OPTS環境變數,用來傳送命令行自變數來啟動 JVM。 xmx 旗標會指定 JVM 可用的記憶體上限。


sonarQubeRunAnalysis - 執行 SonarQube 或 SonarCloud 分析
輸入別名sqAnalysisEnabledboolean。 預設值: false

此選項已從第 1 版的 Gradle 工作變更為使用 SonarQubeSonarCloud 市集擴充功能。 在 [任務] 字段中執行工作之後,啟用此選項可執行 SonarQube 或 SonarCloud 分析。 您也必須在此 Gradle 工作之前,將 準備分析組態 工作從其中一個延伸模組新增至建置管線。


適用於 Gradle 版本的 sqGradlePluginVersionChoice - SonarQube 掃描器
stringsqAnalysisEnabled = true時為必要項。 允許的值:specify(指定版本號碼),build(在 build.gradle 中使用套用的外掛程式)。 預設值: specify

指定要使用的 SonarQube Gradle 外掛程式版本。 在 Gradle 組態檔中宣告版本,或使用這個字串指定版本。


適用於 Gradle 外掛程式版本的 sonarQubeGradlePluginVersion - SonarQube 掃描器
輸入別名sqGradlePluginVersionstringsqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify時為必要項。 預設值: 2.6.1

包含 SonarQube Gradle 外掛程式的版本號碼。


checkStyleRunAnalysis - 執行 Checkstyle
輸入別名checkstyleAnalysisEnabledboolean。 預設值: false

使用預設的 Sun 檢查執行 Checkstyle 工具。 結果會上傳為組建成品。


findBugsRunAnalysis - 執行 FindBugs
輸入別名findbugsAnalysisEnabledboolean。 預設值: false

使用 FindBugs 靜態分析工具來尋找程式代碼中的 Bug。 結果會上傳為組建成品。 在 Gradle 6.0 中,此外掛程式已移除。 請改用 SpotBugs 外掛程式。


pmdRunAnalysis - 執行 PMD
輸入別名pmdAnalysisEnabledboolean。 預設值: false

使用 PMD Java 靜態分析工具來尋找程式代碼中的 Bug。 結果會上傳為組建成品。


spotBugsAnalysis - 運行 SpotBugs
輸入別名spotBugsAnalysisEnabledboolean。 預設值: false

spotBugs時執行 true。 此外掛程式適用於 Gradle v5.6 或更新版本。 深入瞭解如何使用 SpotBugs Gradle 外掛程式 深入瞭解。 外掛程式可能以非預期的方式運作,或完全無法搭配舊版 Gradle 運作。


spotBugsGradlePluginVersionChoice - Spotbugs 外掛程式版本
stringspotBugsAnalysisEnabled = true時為必要項。 允許的值:specify(指定版本號碼),build(在 build.gradle 中使用套用的外掛程式)。 預設值: specify

指定要使用的 SpotBugs Gradle 外掛程式版本。 版本可以在 Gradle 組態檔中宣告,也可以在此字串中指定版本。


spotbugsGradlePluginVersion - 版本號碼
stringspotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify時為必要項。 預設值: 4.7.0

包含 SpotBugs Gradle 外掛程式的版本號碼,


工作控制選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性

輸出變數

沒有。

備註

SonarQube 分析的組態已移至工作 SonarQube 或 SonarCloud 擴充功能。

使用此工作來建置使用 Gradle 包裝函式腳本。

如何從 Gradle 專案產生包裝函式?

Gradle 包裝函式可讓組建代理程式下載並設定簽入存放庫的確切 Gradle 環境,而不需要在 JVM 以外的組建代理程式本身進行任何軟體設定。

  1. 從 build.gradle 所在的根項目目錄發出下列命令,以建立 Gradle 包裝函式:

    jamal@fabrikam> gradle wrapper

  2. 將您的 Gradle 包裝函式上傳至遠端存放庫。

    有二進製成品是由 gradle 包裝函式所產生的(位於 gradle/wrapper/gradle-wrapper.jar)。 這個二進位檔很小,不需要更新。 如果您需要變更在組建代理程式上執行的 Gradle 組態,請更新 gradle-wrapper.properties

    存放庫看起來應該像這樣:

|-- gradle/
    `-- wrapper/
        `-- gradle-wrapper.jar
        `-- gradle-wrapper.properties
|-- src/
|-- .gitignore
|-- build.gradle
|-- gradlew
|-- gradlew.bat

如何修正下載相依性時的逾時?

若要修正下載相依性時 Read timed out 之類的錯誤,Gradle 4.3+ 的使用者可以將 -Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000 新增至 Options來變更逾時。 這會將逾時時間從10秒增加到1分鐘。

範例

使用 Gradle 建置 Java 應用程式

需求

要求 說明
管線類型 YAML,傳統組建
執行於 Agent、DeploymentGroup
要求 沒有
能力 此工作不符合作業中後續工作的任何需求。
命令限制 任意
Settable 變數 任意
代理程式版本 1.91.0 或更新
工作類別 建造