尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
GitHub Actions 中 setup-java 步骤详解:JDK 设置与 Maven 依赖缓存
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的版本更新以获取性能改进和新特性支持。
RELATED

相关推荐

【小程序课程设计/毕业设计】基于小程序的地方畲族非遗资源数字化交易系统的设计与实现 SpringBoot 驱动的畲族文化社群交流与产品售卖系统【附源码、数据库、万字文档】

【小程序课程设计/毕业设计】基于小程序的地方畲族非遗资源数字化交易系统的设计与实现 SpringBoot 驱动的畲族文化社群交流与产品售卖系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

📅 2026/10/5 15:02:13
电脑远程控制软件哪个好用 如何远程控制另一台电脑

电脑远程控制软件哪个好用 如何远程控制另一台电脑

不少职场人、多主机玩家都会纠结电脑远程控制软件哪个好用,市面上多数工具很难满足长时间稳定操控需求。电脑远程控制软件哪个好用呢?想要兼顾流畅度与画面表现,推荐无界趣连2.0。不管是用笔记本远程调取工位主机资料,还是低配办公…

📅 2026/10/24 11:27:10
小程序 毕设项目:智慧校园心理健康服务管理平台的设计与实现 高校心理问诊预约与咨询记录管理系统的设计与实现 (源码+文档,讲解、调试运行,定制等)

小程序 毕设项目:智慧校园心理健康服务管理平台的设计与实现 高校心理问诊预约与咨询记录管理系统的设计与实现 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

📅 2026/11/6 22:51:44
MORE NEWS

更多资讯

📰

汉中电工证在哪里办 内部消息告诉你实操考试不挂科的秘诀

汉中电工证在哪里办 内部消息告诉你实操考试不挂科的秘诀 实操考试心里没底怕挂科?这是很多报考汉中电工证的小伙伴最真实的感受。尤其是第一次接触特种作业考试的你,面对高压电、接线、安全操作流程,确实会担心自己会不会因为一个小失误就挂掉。别急,我…

📰

海南电工证学习值不值得考?实操考试心里没底怕挂科

海南电工证学习值不值得考?实操考试心里没底怕挂科 实操考试心里没底怕挂科?海南电工证学习值不值得考?这是不少打算考电工证的朋友们最关心的问题。尤其是在当前建筑行业和电力行业高速发展的背景下,电工证不仅是进入相关岗位的“入场券”,更是薪资提升…

📰

井下电工证复审考试题全国通用怎么考?学历不高也能拿证

井下电工证复审考试题全国通用怎么考?学历不高也能拿证 你是不是也担心自己学历不高,怕报不了井下电工证复审考试?其实不然, 井下电工证复审考试题全国通用…

📰

新密特种工证考试怕不过白交钱?全国通用证书怎么考稳过

新密特种工证考试怕不过白交钱?全国通用证书怎么考稳过 怕考不过白交培训费?新密特种工证考试不是靠运气,而是靠准备。尤其是这个证书全国通用,考过就是硬通货,但很多新手一上手就被实操和理论题整懵,最后白花钱还落不下证。今天就从一个郑州金水区项目…

📰

建湖电工证在哪办保姆级教程:学历不高怕报不上名?手把手教你

建湖电工证在哪办保姆级教程:学历不高怕报不上名?手把手教你 你是不是也担心自己学历不高,考个电工证都难?别急,今天我就用 建湖电工证在哪办 的实际案例,给你一套 保姆级教程…

📰

千唐志斋电工证上岗必备,实操考试心里没底怕挂科?

千唐志斋电工证上岗必备,实操考试心里没底怕挂科? 你是不是正盯着千唐志斋电工证的报考信息,心里直打鼓?实操考试心里没底怕挂科,这几乎是每个打算考电工证的人都会有的担忧。尤其是在洛阳这样的工地上,千唐志斋电工证可以说是 上岗必备…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬