使用此工作來建置使用 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 包裝函式
輸入別名: wrapperScript
。
string
。 必須的。 預設值: gradlew
。
指定將用於組建的存放庫內 gradlew
包裝函式的位置。 Windows 上的代理程式(包括Microsoft裝載的代理程式)必須使用 gradlew.bat
包裝函式。 Linux 或 macOS 上的代理程式可以使用 gradlew
殼層腳本。 深入瞭解 Gradle 包裝函式。 如果 Gradle 包裝函式不在根目錄中,請指定包裝函式腳本的路徑。 例如: subdir/gradlew
。
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
。
codeCoverageTool != None
時為必要項。 預設值: build/classes/main/
。
包含類別檔案和封存盤案的目錄逗號分隔清單(.jar、.war 等等)。 這些目錄中的類別檔案會報告程式代碼涵蓋範圍。 一般而言,工作會在 build/classes/java/main
下搜尋類別(針對 Gradle 4+),這是 Gradle 組建的預設類別目錄。
codeCoverageClassFilter
-
類別包含/排除篩選條件
輸入別名: classFilter
。
string
。 選擇性。
codeCoverageTool != None
時使用 。
要包含或排除類別的逗號分隔篩選清單,無法收集程式代碼涵蓋範圍。 例如:+:com.*
、+:org.*
、-:my.app*.*
。
codeCoverageFailIfEmpty
-
遺失程式代碼涵蓋範圍結果時失敗
輸入別名: failIfCoverageEmpty
。
boolean
。 選擇性。
codeCoverageTool != None
時使用 。 預設值: false
。
如果程式代碼涵蓋範圍未產生任何要發佈的結果,則組建會失敗。
codeCoverageGradle5xOrHigher
-
Gradle 版本 >= 5.x
輸入別名: gradle5xOrHigher
。
boolean
。 選擇性。
codeCoverageTool = JaCoCo
時使用 。 預設值: true
。
如果 gradle 版本 >= 5.x,請將此設定為 'true'。
javaHomeOption
-
依 設定JAVA_HOME
輸入別名: javaHomeSelection
。
string
。 必須的。 允許的值:JDKVersion
(JDK 版本),Path
。 預設值: JDKVersion
。
選取工作在建置期間探索的 JDK 版本,或手動輸入 JDK 路徑,來設定JAVA_HOME。
jdkVersionOption
-
JDK 版本
輸入別名: jdkVersion
。
string
。 選擇性。
javaHomeSelection = 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
。 選擇性。
javaHomeSelection = 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
。
javaHomeSelection = Path
時為必要項。
將JAVA_HOME設定為指定的路徑。
jdkArchitectureOption
-
JDK 架構
輸入別名: jdkArchitecture
。
string
。 選擇性。
jdkVersion != 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
。
sqAnalysisEnabled = true
時為必要項。 允許的值:specify
(指定版本號碼),build
(在 build.gradle 中使用套用的外掛程式)。 預設值: specify
。
指定要使用的 SonarQube Gradle 外掛程式版本。 在 Gradle 組態檔中宣告版本,或使用這個字串指定版本。
適用於 Gradle 外掛程式版本的 sonarQubeGradlePluginVersion
- SonarQube 掃描器
輸入別名: sqGradlePluginVersion
。
string
。
sqAnalysisEnabled = 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
。
spotBugsAnalysisEnabled = true
時為必要項。 允許的值:specify
(指定版本號碼),build
(在 build.gradle 中使用套用的外掛程式)。 預設值: specify
。
指定要使用的 SpotBugs Gradle 外掛程式版本。 版本可以在 Gradle 組態檔中宣告,也可以在此字串中指定版本。
spotbugsGradlePluginVersion
-
版本號碼
string
。
spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify
時為必要項。 預設值: 4.7.0
。
包含 SpotBugs Gradle 外掛程式的版本號碼,。
工作控制選項
除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性。
輸出變數
沒有。
備註
SonarQube 分析的組態已移至工作 的 SonarQube 或 SonarCloud 擴充功能。
使用此工作來建置使用 Gradle 包裝函式腳本。
如何從 Gradle 專案產生包裝函式?
Gradle 包裝函式可讓組建代理程式下載並設定簽入存放庫的確切 Gradle 環境,而不需要在 JVM 以外的組建代理程式本身進行任何軟體設定。
從 build.gradle 所在的根項目目錄發出下列命令,以建立 Gradle 包裝函式:
jamal@fabrikam> gradle wrapper
將您的 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 或更新 |
工作類別 | 建造 |