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 codeCoverageToolOption != None. Class files directories. Default: build/classes/main/.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageToolOption != None. Class inclusion/exclusion filters. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageToolOption != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageGradle5xOrHigher: true # boolean. Alias: gradle5xOrHigher. Optional. Use when codeCoverageToolOption = 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 javaHomeOption = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeOption = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64' | 'arm64'. Alias: jdkArchitecture. Optional. Use when jdkVersionOption != 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 sonarQubeRunAnalysis = true. SonarQube scanner for Gradle version. Default: specify.
    #sonarQubeGradlePluginVersion: '2.6.1' # string. Alias: sqGradlePluginVersion. Required when sonarQubeRunAnalysis = 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 spotBugsAnalysis = true. Spotbugs plugin version. Default: specify.
    #spotbugsGradlePluginVersion: '4.7.0' # string. Required when spotBugsAnalysis = 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 codeCoverageToolOption != None. Class files directories. Default: build/classes/main/.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageToolOption != None. Class inclusion/exclusion filters. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageToolOption != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageGradle5xOrHigher: true # boolean. Alias: gradle5xOrHigher. Optional. Use when codeCoverageToolOption = 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 javaHomeOption = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeOption = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64'. Alias: jdkArchitecture. Optional. Use when jdkVersionOption != 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 sonarQubeRunAnalysis = true. SonarQube scanner for Gradle version. Default: specify.
    #sonarQubeGradlePluginVersion: '2.6.1' # string. Alias: sqGradlePluginVersion. Required when sonarQubeRunAnalysis = 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 spotBugsAnalysis = true. Spotbugs plugin version. Default: specify.
    #spotbugsGradlePluginVersion: '4.7.0' # string. Required when spotBugsAnalysis = 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 codeCoverageToolOption != None. Class files directories. Default: build/classes/main/.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageToolOption != None. Class inclusion/exclusion filters. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageToolOption != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageGradle5xOrHigher: true # boolean. Alias: gradle5xOrHigher. Optional. Use when codeCoverageToolOption = 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 javaHomeOption = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeOption = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64'. Alias: jdkArchitecture. Optional. Use when jdkVersionOption != 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 sonarQubeRunAnalysis = true. SonarQube scanner for Gradle version. Default: specify.
    #sonarQubeGradlePluginVersion: '2.6.1' # string. Alias: sqGradlePluginVersion. Required when sonarQubeRunAnalysis = 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 spotBugsAnalysis = true. Spotbugs plugin version. Default: specify.
    #spotbugsGradlePluginVersion: '4.7.0' # string. Required when spotBugsAnalysis = true && spotBugsGradlePluginVersionChoice = specify. Version number. Default: 4.7.0.

輸入

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

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


workingDirectory - 工作目錄
輸入別名: cwd。 string。

指定要執行 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 - 測試結果檔案
string。 publishJUnitResults = true時為必要項。 預設值: **/TEST-*.xml。

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


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

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


codeCoverageToolOption - 程式代碼涵蓋範圍工具
輸入別名: codeCoverageTool。 string。 允許的值:None、Cobertura、JaCoCo。 預設值: None。

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


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

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


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

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


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

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


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

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


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

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


jdkVersionOption - JDK 版本
輸入別名: jdkVersion。 string。 選擇性。 javaHomeOption = JDKVersion時使用 。 允許的值:default、1.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 版本
輸入別名: jdkVersion。 string。 選擇性。 javaHomeOption = JDKVersion時使用 。 允許的值為:default、1.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 路徑
輸入別名: jdkUserInputPath。 string。 javaHomeOption = Path時為必要項。

將JAVA_HOME設定為指定的路徑。


jdkArchitectureOption - JDK 架構
輸入別名: jdkArchitecture。 string。 選擇性。 jdkVersionOption != default時使用 。 允許的值:x86、x64、arm64。 預設值: x64。

提供 JDK 架構 (x86 或 x64)。


jdkArchitectureOption - JDK 架構
輸入別名: jdkArchitecture。 string。 選擇性。 jdkVersionOption != default時使用 。 允許的值:x86、x64。 預設值: x64。

提供 JDK 架構 (x86 或 x64)。


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


spotbugsGradlePluginVersion - 版本號碼
string。 spotBugsAnalysis = 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 或更新
工作類別 建造