Skip to main content

此版本的 GitHub Enterprise 已停止服务 2022-10-12. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

使用 Maven 构建和测试 Java

您可以在 GitHub Actions 中创建持续集成 (CI) 工作流程,以使用 Maven 构建和测试 Java 项目。

注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。

简介

本指南介绍如何使用 Maven 软件项目管理工具为 Java 项目创建执行持续集成 (CI) 的工作流程。 您创建的工作流程将允许您查看拉取请求提交何时会在默认分支上导致构建或测试失败; 这个方法可帮助确保您的代� �始终是健康的。 � 可以将 CI 工作流扩展到从工作流运行上� 项目。

GitHub 托管的运行器有一个带有预安装软件的工具缓存,其中包括 Java 开发工具包 (JDK) 和 Maven。 有关软件以及 JDK 和 Maven 的预安装版本的列表,请参阅“GitHub 托管的运行器规范”。

先决条件

您应该熟悉 YAML 和 GitHub Actions 的语法。 有关详细信息,请参阅:

建议您对 Java 和 Maven 框架有个基本的了解。 有关详细信息,请参阅 Maven 文档中的 Maven 入门指南

在 GitHub Enterprise Server 上使用自托管的运行器

在包含自承载运行器的 GitHub Enterprise Server 上使用设置操作(例如 actions/setup-LANGUAGE)时,可能需要在� 法访问 Internet 的运行器上设置工具缓存。 有关详细信息,请参阅“在� 法访问 Internet 的自承载运行器上设置工具缓存”。

使用 Maven 入门工作流程

GitHub 提供有 Maven 入门工作流程,适用于大多数基于 Maven 的 Java 项目。 有关详细信息,请参阅 Maven 入门工作流

要快速开始,您可以在创建新工作流程时选择预配置的 Maven 入门工作流程。 有关详细信息,请参阅“GitHub Actions 快速入门”。

也可以通过在存储库的 .github/workflows 目录中创建新文件来手动添� 此工作流。

YAML
name: Java CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Build with Maven
        run: mvn --batch-mode --update-snapshots package

此工作流程执行以下步骤:

  1. checkout 步骤在运行器上下载存储库的副本。
  2. setup-java 步骤通过 Adoptium 配置 Java 11 JDK。
  3. “使用 Maven 构建”步骤以非交互模式运行 Maven package 目� �,以确保生成代� �、通过测试以及可创建包。

在创建构建和测试工作流程时,默认入门工作流程是很好的起点,然后您可以自定义入门工作流程以满足项目的需求。

在其他操作系统上运行

入门工作流使用 GitHub 托管的 ubuntu-latest 运行器将作业配置为在 Linux 上运行。 可以更改 runs-on 键以在不同的操作系统上运行作业。 例如,您可以使用 GitHub 托管的 Windows 运行器。

runs-on: windows-latest

或者,您可以在 GitHub 托管的 macOS 运行器上运行。

runs-on: macos-latest

您还可以在 Docker 容器中运行作业,或者提供在自己的基础架构上运行的自托管运行器。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

指定 JVM 版本和架构

初学者工作流程将 PATH 设置为包含 OpenJDK 8,用于 x64 平台。 如果要使用不同的 Java 版本或面向不同的体系结构(x64x86),可以使用 setup-java 操作选择不同的 Java 运行时环境。

例如,要使用由 Adoptium 提供的 11 版本的 JDK,用于 x64 平台,可以使用 setup-java 操作并将 java-versiondistributionarchitecture 参数配置为 '11''adopt'x64

YAML
steps:
  - uses: actions/checkout@v2
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v2
    with:
      java-version: '11'
      distribution: 'adopt'
      architecture: x64

有关详细信息,请参阅 setup-java 操作。

构建和测试代� �

您可以使用与本地相同的命令来构建和测试代� �。

默认情况下,入门工作流将运行 package 目� �。 在默认的 Maven 配置中,此命令将下载依赖项、构建类别、运行测试并将类别打包为可分发� �式,如 JAR 文件。

如果使用不同的命令来构建项目,或者想要使用不同的目� �,则可以指定这些命令。 例如,� 可能想要运行在 pom-ci.xml 文件中配置的 verify 目� �。

YAML
steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-java@v2
    with:
      java-version: '11'
      distribution: 'adopt'
  - name: Run the Maven verify phase
    run: mvn --batch-mode --update-snapshots verify

将工作流数据打包为构件

构建成功且测试通过后,您可能想要上� 生成的 Java 包作为构件。 这会将构建的包存储为工作流程运行的一部分,并允许您下载它们。 构件可帮助您在拉取请求合并之前在本地环境中测试并调试它们。 有关详细信息,请参阅“使用工件持久保存工作流数据”。

Maven 通常会在 target 目录中创建 JAR、EAR 或 WAR 等输出文件。 要将这些项目上� 为构件,可以将它们复制到包含要上� 的构件的新目录中。 例如,可创建一个名为 staging 的目录。 然后,可以使用 upload-artifact 操作上� 该目录的内容。

YAML
steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-java@v2
    with:
      java-version: '11'
      distribution: 'adopt'
  - run: mvn --batch-mode --update-snapshots verify
  - run: mkdir staging && cp target/*.jar staging
  - uses: actions/upload-artifact@v2
    with:
      name: Package
      path: staging