生成 Java 应用

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

注意

以下指南使用 Azure Pipelines 中提供的基于 YAML 的管道。 使用以下 YAML 中使用的任务。

可以使用管道自动生成和测试 Java 项目。 生成并测试应用后,可以将应用部署到Azure 应用服务Azure FunctionsAzure Kubernetes 服务。 如果使用的是 Android 项目,请参阅 生成、测试和部署 Android 应用

先决条件

Azure DevOps 中必须具有以下项:

创建管道

  1. 在 GitHub 上分叉以下存储库:

    https://github.com/MicrosoftDocs/pipelines-java
    
  2. 登录到你的 Azure DevOps 组织,并转到你的项目。

  3. 转到“管道”,然后选择“新建管道”。

  4. 首先选择 GitHub 作为源代码的位置,执行向导的步骤。 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。

  5. 选择存储库。 你可能会被重定向到 GitHub 来安装 Azure Pipelines 应用。 如果是这样,请选择“批准并安装”。

  6. 看到“ 配置 ”选项卡时,请选择 MavenGradleAnt ,具体取决于要 如何生成代码

  7. 准备就绪后,选择“保存并运行”。

  8. 将新的 azure-pipelines.yml 文件提交到存储库。 再次选择“保存并运行” 。

    如果要监视管道的操作,请选择生成作业。

    你刚刚创建并运行了一个管道,因为你的代码似乎与我们为你自动创建的 Maven 模板匹配。

    现在,存储库中有一个可用的 YAML 管道 (azure-pipelines.yml) ,可供你自定义!

  9. 准备好对管道进行更改时,请在“管道”页中选择该管道,然后编辑azure-pipelines.yml文件。

  1. 在 Azure DevOps Server 2019 中将以下存储库导入到 Git 存储库中:

    https://github.com/MicrosoftDocs/pipelines-java
    
  2. 保存管道并排队生成。 Build #nnnnnnnn.n has been queued当消息出现时,选择数字链接以查看管道的操作。 现在,你已有一个工作管道,可供你随时自定义!

  1. 将以下存储库导入 TFS 中的 Git 存储库:

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

    此模板会自动添加在示例存储库中生成代码所需的任务。

  2. 保存管道并排队生成。 Build #nnnnnnnn.n has been queued当消息出现时,选择数字链接以查看管道的操作。 现在,你已有一个工作管道,可供你随时自定义!

阅读进一步了解自定义管道的一些更常见方法。

生成环境

可以使用 Azure Pipelines 生成 Java 应用,而无需设置自己的任何基础结构。 可以在 Windows、Linux 或 macOS 映像上生成。 Azure Pipelines 中的 Microsoft 托管代理具有用于预安装的 Java 的新式 JDK 和其他工具。 若要了解安装了哪些版本的 Java,请参阅 Microsoft 托管的代理

更新文件中的以下代码片段 azure-pipelines.yml 以选择相应的映像。

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

有关映像的完整列表,请参阅 Microsoft 托管的代理

作为使用 Microsoft 托管代理的替代方法,可以使用已安装 Java 设置 自承载代理 。 如果拥有大型存储库,也可以使用自承载代理节省更多时间,也可以运行增量生成。

生成在 自承载代理上运行。 请确保已在代理上安装 Java。

生成代码

Maven

使用 Maven 生成,以下代码片段将添加到 azure-pipelines.yml 文件中。 可以更改值(如文件的路径 pom.xml )以匹配项目配置。 有关这些选项的详细信息,请参阅 Maven 任务。

steps:
- task: Maven@4
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    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: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

选择 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 任务。

steps:
- task: Ant@1
  inputs:
    workingDirectory: ''
    buildFile: 'build.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    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'

后续步骤

生成并测试应用后,可以将生成输出上传到 Azure Pipelines,创建和发布 Maven 包,或将生成输出打包到要部署到 Web 应用程序的 .war/jar 文件中。