共用方式為


建置 Java 應用程式

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

使用 Azure Pipelines 將 Java 應用程式的建置、測試和部署自動化。 本文說明如何使用 Maven、Gradle 或 Ant 等工具來設定 Java 專案的管線。 您也會瞭解如何將應用程式部署至 Azure 服務,例如 App Service、Functions 或 Kubernetes。

使用管線來達成目的:

如果您在 Android 專案上工作,請參閱建置 、測試及部署 Android 應用程式

必要條件

產品 需求
Azure DevOps - Azure DevOps 專案
- 能夠在由 Microsoft 託管的代理上運行管線。 您可以購買平行作業,也可以申請免費方案。
- YAML 和 Azure Pipelines 的基本知識。 如需詳細資訊,請參閱 建立您的第一個管線
- 許可權:
     - 若要建立管線:您必須位於 參與者 群組中,且群組必須將 [建立組建管線 ] 許可權設定為 [允許]。 Project Administrators 群組的成員可以管理管線。
    - 若要建立服務連線:您必須具有 管理員建立者 角色以進行 服務連線
GitHub - GitHub 帳戶。
- 一個用於授權 Azure Pipelines 的 GitHub 服務連線
天藍色 Azure 訂用帳戶
產品 需求
Azure DevOps - Azure DevOps 專案
- 自託管代理程式。 若要建立一個代理程式,請參閱 自我裝載代理程式。
- YAML 和 Azure Pipelines 的基本知識。 如需詳細資訊,請參閱 建立您的第一個管線
- 許可權:
    - 若要建立管線:您必須位於 參與者 群組中,且群組必須將 [建立組建管線 ] 許可權設定為 [允許]。 Project Administrators 群組的成員可以管理管線。
    - 若要建立服務連線:您必須具有 管理員建立者 角色以進行 服務連線
GitHub - GitHub 帳戶。
- 一個用於授權 Azure Pipelines 的 GitHub 服務連線
天藍色 Azure 訂用帳戶

建立 GitHub 存放庫

將下列存放庫複製到你的 GitHub 帳號:

https://github.com/MicrosoftDocs/pipelines-java

建立管線

  1. 登入您的 Azure DevOps 組織,然後移至您的專案。

  2. 移至 [管線],然後在專案中建立第一個管線時選取 [ 新增管線 ] 或 [建立管線 ]。

  3. 遵循精靈步驟,從選取 GitHub 作為原始程式碼的位置開始。 系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。

  4. 選取您的存放庫。 系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果是,請選取 [ 核准並安裝 ] 繼續進行。

  5. 當您看到 [設定管線] 索引卷標時,請根據您想要建置程序代碼的方式,選取 [Maven]、[Gradle] 或 [Ant]。

  6. azure-pipelines.yml包含管線定義的檔案會在存放庫中建立,並在 YAML 編輯器中開啟。 您可以藉由新增更多工作或修改現有的工作來自定義管道。 如需建置工作的詳細資訊,請參閱 建置程序代碼

  7. 當您完成編輯時,azure-pipelines.yml請選取[儲存並執行]。

  8. 若要將 檔案提交至存放庫,請再次選取 [儲存並執行 ]。

選取 [作業 ] 以監看管線的運作情形。

  1. 移至您的集合,然後選取您的專案。

  2. 選取管線,然後在專案中建立第一個管線時,選取新增管線建立管線

  3. 先選取 GitHub Enterprise Server 作為原始程式碼的位置,以執行精靈的步驟。

  4. 使用現有的 GitHub 服務連線或建立新的連線。

    若要建立服務連線:

    1. 選取 [ 連線到 GitHub Enterprise Server]。
    2. 輸入您的 GitHub Enterprise 伺服器 URL。
    3. 輸入您的 GitHub Enterprise Server 個人存取令牌。 如果您沒有個人存取令牌,您可以在 GitHub Enterprise Server 帳戶中建立一個令牌。 如需詳細資訊,請參閱 建立個人存取令牌
  5. 選取您的存放庫。 系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果發生此情況,請選取 [核准並安裝]

  6. 當您看到 [設定管線] 索引卷標時,請根據您想要建置程序代碼的方式,選取 [Maven]、[Gradle] 或 [Ant]。

  7. azure-pipelines.yml包含管線定義的檔案會在存放庫中建立,並在 YAML 編輯器中開啟。 您可以藉由新增更多工作或修改現有的工作來自定義管道。 如需建置工作的詳細資訊,請參閱 建置程序代碼

  8. 當您完成編輯時,azure-pipelines.yml請選取[儲存並執行]。

  9. 若要將 檔案提交至存放庫,請再次選取 [儲存並執行 ]。

您可以選取 工作 以觀察管線的運行。

您現在已在存放庫中有一個可運作的 YAML 管線 (azure-pipelines.yml),可供您自定義! 若要變更管線,請在 [管線] 頁面中選取它,然後編輯azure-pipelines.yml檔案。

建置環境

使用 Azure Pipelines 來建置 Java 應用程式,而不需設定基礎結構。 建置在 Windows、Linux 或 macOS 映射上。 Azure Pipelines 中由 Microsoft 託管的代理程式已預先安裝了新式 JDK 和其他適用於 Java 的工具。 若要檢查已安裝的 Java 版本,請參閱 Microsoft裝載的代理程式

更新檔案 azure-pipelines.yml 中的下列代碼段,以選取適當的映像。

pool:
  vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'

如需映像的完整清單,請查看 由 Microsoft 裝載的代理程式

作為 Microsoft 提供的代理程式的替代方案,請設定已安裝 Java 的 自行裝載代理程式 。 如果您有大型存放庫或執行累加組建,請使用自我裝載代理程式來節省時間。

組建會在 自我裝載的代理程式上執行。 請確定您所選建置方法所需的 Java 和工具會安裝在代理程式的主機上。

您可以在管線編輯器的 [選項] 索引標籤的 [代理程式集區] 和 [代理程式規格] 區段中選取代理程式集區和代理程式功能。

例如,在您的 azure-pipelines.yml 檔案中新增以下代碼段,以指定具有 Maven 功能的代理集區和代理程式。

pool: 
  name: MyPool
  demands: maven

建置您的程式碼

您可以使用 Maven、Gradle、Ant 或腳本來建置 Java 應用程式。 下列各節說明如何將建置步驟新增至每種方法的管線。

Maven

針對 Maven 組建,將下列工作新增至 azure-pipelines.yml 檔案。 請替換這些數值以符合您的專案。 如需工作選項的詳細資訊,請參閱 Maven 工作

steps:
- task: Maven@4
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    goals: 'package'

針對 Spring Boot,您也可以使用 Maven 工作。 請確定您的 mavenPomFile 值反映檔案 pom.xml 的路徑。 例如,如果您使用 Spring Boot 範例存放庫,則路徑為 complete/pom.xml

自定義建置路徑

mavenPomFile如果pom.xml檔案不在存放庫的根目錄中,請設定值。 檔案路徑值必須相對於存放庫的根目錄,例如 IdentityService/pom.xml$(system.defaultWorkingDirectory)/IdentityService/pom.xml

自訂 Maven 目標

目標 值設定為空間分隔的目標清單,讓 Maven 執行,例如 clean package。 如需常見 Java 階段和目標的詳細資訊,請參閱 Apache 的 Maven 檔

Gradle

針對 Gradle 組建,將下列工作新增至 azure-pipelines.yml 檔案。 如需這些選項的詳細資訊,請參閱 Gradle 工作。

steps:
- task: Gradle@3
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

Gradle 包裝器

確定檔案 gradlew 位於存放庫中。 如果不是,請在專案的根目錄中執行 gradle wrapper 來產生它。 如需建立 Gradle 包裝函式的詳細資訊,請參閱 Gradle

選擇 Gradle 的版本

除非儲存庫的 gradle/wrapper/gradle-wrapper.properties 檔案中包含 distributionUrl 屬性,以指定要在建置期間下載及使用的不同 Gradle 版本,否則會使用安裝在代理機器上的 Gradle 版本。

調整建置路徑

workingDirectory如果gradlew檔案不在存放庫的根目錄中,請設定值。 目錄值應該相對於存放庫的根目錄,例如 IdentityService$(system.defaultWorkingDirectory)/IdentityService

gradleWrapperFile如果您的gradlew檔案不在存放庫的根目錄中,請調整值。 檔案路徑值應該相對於存放庫的根目錄,例如 IdentityService/gradlew$(system.defaultWorkingDirectory)/IdentityService/gradlew

調整 Gradle 工作

調整 Gradle 應該執行的工作的 工作值,例如 buildcheck。 如需 Gradle 常見 Java 外掛程式工作的詳細資訊,請參閱 Gradle 的檔

Ant

使用 Ant 組建,將下列工作新增至您的 azure-pipelines.yml 檔案。 變更值,例如檔案 build.xml 的路徑,以符合專案組態。 如需這些選項的詳細資訊,請參閱 Ant 工作。 如果使用範例存放庫,您必須在存放庫中提供 build.xml 檔案。

steps:
- task: Ant@1
  inputs:
    workingDirectory: ''
    buildFile: 'build.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'

腳本

若要使用命令行或腳本進行建置,請將其中一個代碼段新增至 azure-pipelines.yml 檔案。

內嵌指令碼

此步驟 script: 會在Linux和macOS上使用Bash執行內嵌腳本,而在Windows上則使用Command Prompt。 如需詳細資訊,請參閱 Bash命令行 工作。

steps:
- script: |
    echo Starting the build
    mvn package
  displayName: 'Build with Maven'

腳本檔案

此工作會執行存放庫中的腳本檔案。 如需詳細資訊,請參閱 Shell 腳本Batch 腳本PowerShell 工作。

steps:
- task: ShellScript@2
  inputs:
    scriptPath: 'build.sh'

下一步

將組建輸出發佈至管線。 在 Maven 套件或 .war/jar 檔案中封裝和發布您的應用程式,以將其部署至 Web 應用程式。

深入瞭解如何為您的部署目標建立 CI/CD 管線: