1. 引言在 GitHub Actions 工作流中Java 项目的构建通常需要配置 JDK 环境并管理依赖缓存以加速构建过程。actions/setup-java是一个官方 Action它简化了这些任务。本文将详细解析该步骤如何设置 JDK 并启用 Maven 依赖缓存。2. actions/setup-java 概述actions/setup-java是 GitHub 官方提供的 Action用于在 runner 环境中设置指定的 Java 开发工具包JDK版本。它的核心功能包括JDK 安装与配置自动下载、安装并配置指定版本如 Java 8, 11, 17, 21的 JDK。环境变量设置自动设置JAVA_HOME和将 JDK 的bin目录添加到PATH。构建工具集成支持 Maven、Gradle 等并能与依赖缓存功能协同工作。3. 基础用法设置 JDK以下是一个基础示例展示如何在 workflow 中使用actions/setup-java来设置 JDK 17。jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Set up JDK 17 uses: actions/setup-javav4 with: java-version: 17 distribution: temurin # 可选指定发行版如 temurin, zulu, corretto参数说明java-version指定所需的 Java 版本支持主版本号如 8, 11, 17或精确版本。distribution指定 JDK 发行版默认为 temurinAdoptium Temurin。其他选项包括 zulu (Azul Zulu), corretto (Amazon Corretto) 等。执行此步骤后runner 中即可使用java -version和javac等命令。4. 启用 Maven 依赖缓存Maven 项目在每次构建时都会下载依赖这可能会消耗大量时间。actions/setup-java可以与 GitHub Actions 的缓存功能集成自动缓存 Maven 本地仓库~/.m2/repository从而显著提升后续构建的速度。- name: Set up JDK 17 with Maven cache uses: actions/setup-javav4 with: java-version: 17 distribution: temurin cache: maven # 关键参数启用 Maven 依赖缓存核心机制当cache: maven被设置时该步骤会自动计算项目pom.xml文件的哈希值如果存在多个模块则会考虑所有相关的pom.xml。此哈希值作为缓存的 key。如果缓存命中则直接恢复~/.m2/repository目录如果未命中或pom.xml发生变化则在构建结束后将新的依赖缓存起来。这确保了只有在依赖声明发生变化时才需要重新下载依赖。5. 完整工作流示例下面是一个集成了 JDK 设置、Maven 缓存和构建步骤的完整工作流示例。name: Java CI with Maven Cache on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Set up JDK 17 with Maven cache uses: actions/setup-javav4 with: java-version: 17 distribution: temurin cache: maven name: Build with Maven run: mvn -B clean compile --file pom.xml name: Run tests run: mvn -B test --file pom.xml6. 高级配置与技巧6.1 自定义缓存路径与 key除了使用默认的 Maven 缓存你还可以通过cache-dependency-path参数指定其他依赖文件如 Gradle 的build.gradle或gradle.lockfile来启用缓存。- name: Set up JDK with custom cache uses: actions/setup-javav4 with: java-version: 11 distribution: zulu cache: gradle cache-dependency-path: | **/build.gradle **/gradle.lockfile6.2 多 JDK 版本矩阵测试可以利用 GitHub Actions 的矩阵策略在多个 JDK 版本上并行运行测试。jobs: test: runs-on: ubuntu-latest strategy: matrix: java: [ 8, 11, 17, 21 ] steps: - uses: actions/checkoutv4 - name: Set up JDK ${{ matrix.java }} uses: actions/setup-javav4 with: java-version: ${{ matrix.java }} cache: maven - run: mvn -B test6.3 服务器发布配置如果你的项目需要发布到 Maven 中央仓库或 GitHub Packages可以在 setup-java 步骤中配置发布所需的设置。- name: Set up JDK for publishing uses: actions/setup-javav4 with: java-version: 17 distribution: temurin cache: maven server-id: github # 用于发布到 GitHub Packages server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE7. 总结actions/setup-java步骤是 GitHub Actions 中构建 Java 项目的基石。通过java-version和distribution参数它可以灵活地设置所需的 JDK 环境。而cache: maven参数则能智能地缓存依赖大幅减少构建时间。结合矩阵测试、自定义缓存路径等高级功能可以构建出高效、可靠的 Java CI/CD 流水线。建议在实际项目中始终启用依赖缓存并定期检查actions/setup-java的版本更新以获取性能改进和新特性支持。