建置 Java 應用程式

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

您可以使用管線來自動:

如果您正在處理 Android 專案,請參閱 建置、測試及部署 Android 應用程式

必要條件

若要執行下列範例,您必須具備:

  • 您可以在其中建立存放庫的 GitHub 帳戶。 免費建立一個
  • 存取 Azure DevOps Server 集合。
  • 能夠在 Azure DevOps 自我裝載代理程式上執行 Azure Pipelines。
  • Azure DevOps 專案。 如果您沒有專案, 請立即建立專案

建立 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. 若要將 azure-pipelines.yml 檔案認可至存放庫,請選取 [ 儲存],然後再次執行

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

  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. 若要將 azure-pipelines.yml 檔案認可至存放庫,請選取 [ 儲存],然後再次執行

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

您現在已在存放庫中有一個可運作的 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,以及使用安裝在代理程式主機上所選方法建置所需的工具。

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

例如,若要指定代理程式集區和具有 Maven 功能的代理程式,請將下列代碼段新增至您的 azure-pipelines.yml 檔案。

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@2
  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上的命令提示字元來執行內嵌腳本。 如需詳細資訊,請參閱 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 套件或 要部署到 Web 應用程式的 .war/jar 檔案中封裝和發佈應用程式。

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