我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

使用 Gradle 构建和测试 Java

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

GitHub 操作 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub One。 GitHub 操作 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 更多信息请参阅“GitHub 的产品”。

本文内容

简介

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

GitHub 托管的运行器有工具缓存预安装的软件,包括 Java Development Kits (JDKs) 和 Gradle。 有关软件以及 JDK 和 Gradle 预安装版本的列表,请参阅 GitHub 自托管运行器上安装的软件

基本要求

您应该熟悉 YAML 和 GitHub 操作 的语法。 更多信息请参阅:

建议您对 Java 和 Gradle 框架有个基本的了解。 更多信息请参阅 Gradle 文档中的入门指南

从 Gradle 工作流程模板开始

GitHub 提供有 Gradle 工作流程模板,应该适用于大多数基于 Gradle 的 Java 项目。 更多信息请参阅 Gradle 工作流程模板

要快速开始,您可以在创建新工作流程时选择预配置的 Gradle 模板。 更多信息请参阅“从预配置的工作流程模板开始”。

您也可以通过在仓库的 .github/workflow 目录中创建新文件来手动添加此工作流程。

name: Java CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Build with Gradle
        run: ./gradlew build

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

  1. checkout 步骤在运行器上下载仓库的副本。
  2. setup-java 步骤配置 Java 1.8 JDK。
  3. “使用 Gradle 构建”步骤运行 gradlew wrapper 脚本以确保可以创建您的代码构建、测试通过和包。

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

在其他操作系统上运行

初学者工作流程模板使用 GitHub 托管的 ubuntu-latest 运行器将作业配置为在 Linux 上运行。 您可以更改 runs-on 键,让您的作业在其他操作系统上运行。 例如,您可以使用 GitHub 托管的 Windows 运行器。

runs-on: windows-latest

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

runs-on: macos-latest

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

指定 JVM 版本和架构

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

例如,要使用 9.0.4 版本的 JDK,用于 x64 平台,您可以使用 setup-java 操作,将 java-versionarchitecture 参数配置为 '9.0.4'x64

steps:
  - uses: actions/checkout@v2
  - name: Set up JDK 9.0.4 for x64
    uses: actions/setup-java@v1
    with:
      java-version: '9.0.4'
      architecture: x64

更多信息请参阅 setup-java 操作。

构建和测试代码

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

初学者工作流程默认将运行 build 任务。 在默认的 Gradle 配置中,此命令将下载依赖项、构建类别、运行测试并将类别打包为可分发格式,如 JAR 文件。

如果使用不同的命令来构建项目,或者想要使用不同的任务,则可以指定这些命令。 例如,您可能想要运行在 ci.gradle 文件中配置的 package 任务。

steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-java@v1
    with:
      java-version: 1.8
  - name: Run the Gradle package task
    run: ./gradlew -b ci.gradle package

缓存依赖项

您可以缓存依赖项来加快工作流程运行。 运行成功后,您的本地 Gradle 缓存将存储在 GitHub 操作基础架构中。 在未来的工作流程运行中,缓存将会恢复,因此不需要从远程包仓库下载依赖项。 更多信息请参阅“缓存依赖项以加快工作流程”和 cache 操作

steps:
  - uses: actions/checkout@v2
  - name: Set up JDK 1.8
    uses: actions/setup-java@v1
    with:
      java-version: 1.8
  - name: Cache Gradle packages
    uses: actions/cache@v1
    with:
      path: ~/.gradle/caches
      key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
      restore-keys: ${{ runner.os }}-gradle
  - name: Build with Gradle
    run: ./gradlew build

此工作流程将保存本地 Gradle 缓存的内容,位于运行器主目录的 .gradle/caches 目录中。 缓存密钥将是 gradle 构建文件的哈希内容,因此更改它们将使缓存失效。

将工作流数据打包为构件

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

Gradle 通常会在 build/libs 目录中创建 JAR、EAR 或 WAR 等输出文件。 您可以使用 upload-artifact 操作上传该目录的内容。

steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-java@v1
  - run: ./gradlew build
  - uses: actions/upload-artifact@v1
    with:
      name: Package
      path: build/libs

问问别人

找不到要找的内容?

联系我们