生成 Java 应用
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
注意
以下指南使用 Azure Pipelines 中提供的基于 YAML 的管道。 使用以下 YAML 中使用的任务。
可以使用管道自动生成和测试 Java 项目。 生成并测试应用后,可以将应用部署到Azure 应用服务、Azure Functions或Azure Kubernetes 服务。 如果使用的是 Android 项目,请参阅 生成、测试和部署 Android 应用。
先决条件
Azure DevOps 中必须具有以下项:
创建管道
在 GitHub 上分叉以下存储库:
https://github.com/MicrosoftDocs/pipelines-java
登录到你的 Azure DevOps 组织,并转到你的项目。
转到“管道”,然后选择“新建管道”。
首先选择 GitHub 作为源代码的位置,执行向导的步骤。 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。
选择存储库。 你可能会被重定向到 GitHub 来安装 Azure Pipelines 应用。 如果是这样,请选择“批准并安装”。
看到“ 配置 ”选项卡时,请选择 Maven 或 Gradle 或 Ant ,具体取决于要 如何生成代码。
准备就绪后,选择“保存并运行”。
将新的 azure-pipelines.yml 文件提交到存储库。 再次选择“保存并运行” 。
如果要监视管道的操作,请选择生成作业。
你刚刚创建并运行了一个管道,因为你的代码似乎与我们为你自动创建的 Maven 模板匹配。
现在,存储库中有一个可用的 YAML 管道 (
azure-pipelines.yml
) ,可供你自定义!准备好对管道进行更改时,请在“管道”页中选择该管道,然后编辑
azure-pipelines.yml
文件。
在 Azure DevOps Server 2019 中将以下存储库导入到 Git 存储库中:
https://github.com/MicrosoftDocs/pipelines-java
保存管道并排队生成。
Build #nnnnnnnn.n has been queued
当消息出现时,选择数字链接以查看管道的操作。 现在,你已有一个工作管道,可供你随时自定义!
将以下存储库导入 TFS 中的 Git 存储库:
https://github.com/MicrosoftDocs/pipelines-java
此模板会自动添加在示例存储库中生成代码所需的任务。
保存管道并排队生成。
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 应执行 的任务的任务 值,例如 build
或 check
。
有关 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 文件中。
详细了解如何为部署目标创建 CI/CD 管道: