简介
本指南介绍如何使用 Ant 构建系统为 Java 项目创建执行持续集成 (CI) 的工作流程。 您创建的工作流程将允许您查看拉取请求提交何时会在默认分支上导致构建或测试失败; 这个方法可帮助确保您的代码始终是健康的。 您可以扩展 CI 工作流程以从工作流程运行上传构件。
GitHub 托管的运行器有一个带有预安装软件的工具缓存,其中包括 Java 开发工具包 (JDK) 和 Ant。 有关 JDK 和 Ant 的软件和预安装版本列表,请参阅“Using GitHub-hosted runners”。
先决条件
您应该熟悉 YAML 和 GitHub Actions 的语法。 有关详细信息,请参阅:
建议您对 Java 和 Ant 框架有个基本的了解。 有关详细信息,请参阅 Apache Ant 手册。
使用 Ant 入门工作流程
GitHub 提供有 Ant 入门工作流程,适用于大多数基于 Ant 的 Java 项目。 有关详细信息,请参阅 Ant 入门工作流。 在创建构建和测试工作流程时,默认入门工作流程是很好的起点,然后您可以自定义入门工作流程以满足项目的需求。
要快速开始,您可以在创建新工作流程时选择预配置的 Ant 入门工作流程。 有关详细信息,请参阅“GitHub Actions 快速入门”。
也可以通过在存储库的 .github/workflows
目录中创建新文件来手动添加此工作流。
# 工作流的名称。 GitHub 在存储库的“操作”选项卡下显示工作流的名称。如果省略 `name`,GitHub 会显示相对于存储库根目录的工作流文件路径。 name: Java CI # on: [push] # jobs: build: # <!-- This is a YAML comment for use in annotated code examples. --> # 可以使用其他操作系统运行该工作流。 # # 入门工作流使用 GitHub 托管的 `ubuntu-latest` 运行器将作业配置为在 Linux 上运行。 可以更改 `runs-on` 键以在不同的操作系统上运行作业。 # # 例如,你可以通过指定 `runs-on: windows-latest` 使用 GitHub 托管的 Windows 运行器。 或者,你可以使用 `runs-on: macos-latest` 在 GitHub 托管的 macOS 运行器上运行。 # # 您还可以在 Docker 容器中运行作业,或者提供在自己的基础架构上运行的自托管运行器。 有关详细信息,请参阅“[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)”。 runs-on: ubuntu-latest # steps: # 该步骤使用 `actions/checkout` 操作在运行器上下载存储库的副本。 - uses: actions/checkout@v4 # 该步骤通过 Eclipse Adoptium 使用 `actions/setup-java` 操作配置 Eclipse Temurin (Java) 17 JDK。 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' # This step runs the default target in your `build.xml` file in non-interactive mode. - name: Build with Ant run: ant -noinput -buildfile build.xml
name: Java CI
工作流的名称。 GitHub 在存储库的“操作”选项卡下显示工作流的名称。如果省略 name
,GitHub 会显示相对于存储库根目录的工作流文件路径。
on: [push]
jobs:
build:
runs-on: ubuntu-latest
可以使用其他操作系统运行该工作流。
入门工作流使用 GitHub 托管的 ubuntu-latest
运行器将作业配置为在 Linux 上运行。 可以更改 runs-on
键以在不同的操作系统上运行作业。
例如,你可以通过指定 runs-on: windows-latest
使用 GitHub 托管的 Windows 运行器。 或者,你可以使用 runs-on: macos-latest
在 GitHub 托管的 macOS 运行器上运行。
您还可以在 Docker 容器中运行作业,或者提供在自己的基础架构上运行的自托管运行器。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。
steps:
- uses: actions/checkout@v4
该步骤使用 actions/checkout
操作在运行器上下载存储库的副本。
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
该步骤通过 Eclipse Adoptium 使用 actions/setup-java
操作配置 Eclipse Temurin (Java) 17 JDK。
- name: Build with Ant
run: ant -noinput -buildfile build.xml
This step runs the default target in your build.xml
file in non-interactive mode.
# 工作流的名称。 GitHub 在存储库的“操作”选项卡下显示工作流的名称。如果省略 `name`,GitHub 会显示相对于存储库根目录的工作流文件路径。
name: Java CI
#
on: [push]
#
jobs:
build:
# <!-- This is a YAML comment for use in annotated code examples. -->
# 可以使用其他操作系统运行该工作流。
#
# 入门工作流使用 GitHub 托管的 `ubuntu-latest` 运行器将作业配置为在 Linux 上运行。 可以更改 `runs-on` 键以在不同的操作系统上运行作业。
#
# 例如,你可以通过指定 `runs-on: windows-latest` 使用 GitHub 托管的 Windows 运行器。 或者,你可以使用 `runs-on: macos-latest` 在 GitHub 托管的 macOS 运行器上运行。
#
# 您还可以在 Docker 容器中运行作业,或者提供在自己的基础架构上运行的自托管运行器。 有关详细信息,请参阅“[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)”。
runs-on: ubuntu-latest
#
steps:
# 该步骤使用 `actions/checkout` 操作在运行器上下载存储库的副本。
- uses: actions/checkout@v4
# 该步骤通过 Eclipse Adoptium 使用 `actions/setup-java` 操作配置 Eclipse Temurin (Java) 17 JDK。
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# This step runs the default target in your `build.xml` file in non-interactive mode.
- name: Build with Ant
run: ant -noinput -buildfile build.xml
指定 JVM 版本和架构
初学者工作流程将 PATH
设置为包含 OpenJDK 8,用于 x64 平台。 如果要使用不同的 Java 版本或面向不同的体系结构(x64
或 x86
),可以使用 setup-java
操作选择不同的 Java 运行时环境。
例如,要使用由 Adoptium 提供的 11 版本的 JDK,用于 x64 平台,可以使用 setup-java
操作并将 java-version
、distribution
和 architecture
参数配置为 '11'
、'temurin'
和 x64
。
steps: - uses: actions/checkout@v4 - name: Set up JDK 11 for x64 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' architecture: x64
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11 for x64
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
有关详细信息,请参阅 setup-java
操作。
构建和测试代码
您可以使用与本地相同的命令来构建和测试代码。
入门工作流将运行“build.xml”文件中指定的默认目标。 默认目标通常设置为将类、运行测试和包类设置为其可分发格式,例如 JAR 文件。
如果使用不同的命令来构建项目,或者想要运行不同的目标,则可以指定这些命令。 例如,你可能想要运行在 _build-ci.xml_
文件中配置的 jar
目标。
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Run the Ant jar target run: ant -noinput -buildfile build-ci.xml jar
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Ant jar target
run: ant -noinput -buildfile build-ci.xml jar
将工作流数据打包为构件
构建成功且测试通过后,您可能想要上传生成的 Java 包作为构件。 这会将构建的包存储为工作流程运行的一部分,并允许您下载它们。 构件可帮助您在拉取请求合并之前在本地环境中测试并调试它们。 有关详细信息,请参阅“将工作流程数据存储为构件”。
Ant 通常会在 build/jar
目录中创建 JAR、EAR 或 WAR 等输出文件。 可以使用 upload-artifact
操作上传该目录的内容。
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - run: ant -noinput -buildfile build.xml - uses: actions/upload-artifact@v3 with: name: Package path: build/jar
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- run: ant -noinput -buildfile build.xml
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/jar