当前位置:Java -> Java库开发

Java库开发

'java-library-template' 是Java库开发者的全面解决方案,简化了库创建和维护的方方面面。

本博客文章探讨了该模板的一系列功能,包括一键项目设置、自动化发布、安全扫描和轻松的Javadoc生成。了解如何使用Renovate保持依赖项更新,并确保无缝发布到Maven Central。

无论您是资深开发人员还是新手Java开发者,该模板都能让您高效自信地创建高质量的库。

Drake Hotline Bling Meme | creating a new java library; creating a new java-library-template

功能

  • 一键自动化初始项目迁移工作流(GitHub Action)
  • Java 21(corretto)的Gradle Kotlin DSL,版本目录
  • GitHub Actions CI/CD流水线,高效的构建流水线,缓存,集成测试,测试报告和测试失败注释
  • 一键发布流程+发布到Maven Central
  • 使用trivy和GitHub CodeQL分析进行安全和漏洞扫描
  • 使用Renovate自动更新依赖项
  • JavadocGitHub Pages部署
  • 开源社区准备(行为准则,贡献指南,问题和PR模板)

'java-library-template'在'60s

如果您更喜欢观看视频而不是阅读本文,则可以在@thriving_dev YouTube频道上找到'60秒介绍'。

快速开始

使用模板创建您自己的存储库,并按照README.md中的说明进行操作。

CI/CD流水线

该模板的核心是“主GitHub Actions CI/CD流水线”。“在Actions中查看。

CI/CD Pipeline

该工作流包含多个作业,通过依赖项和条件进行建模和链接。根据上下文(触发器,参考,输入参数),它满足不同的用例:

  1. 检查:构建,测试,集成测试;代码质量和漏洞扫描。
    针对活跃的PR运行-以及所有后续列出的用例的一部分。
  2. 最新:发布SNAPSHOT版本到Maven Central和Javadoc(GitHub Pages)。
    在主要分支推送时运行。
  3. 发布(过程):通过Gradle插件执行(主要|次要|补丁)发布过程。
    通过GitHub用户界面/API手动触发工作流。
  4. 发布:发布发布版本到Maven Central和Javadoc(GitHub Pages)。
    对推送的标签运行。

项目结构

项目模板由三个顶层文件夹组成:

  • .github/:定义GitHub Actions CI任务和新的拉取请求、问题等模板。
  • gradle/:包含Gradle配置文件,例如Gradle版本目录和Gradle Wrapper。
  • java-library-template/:库源代码(Gradle子项目)。

此外,以下文件值得关注:

  • gradle/libs.versions.toml:声明版本目录的规范文件
  • settings.gradle.kts:多项目Gradle设置文件。这里定义了所有子项目。
  • gradle.properties:由CI/CD流水线发布过程维护所需的库版本。
  • **/build.gradle.kts:Gradle构建文件

发布到Maven Central

Maven发布过程是完全自动化的,不需要手动操作。

  • main分支(根据流程定义)始终设置为下一个SNAPSHOT版本,并在每次主要CI/CD流水线运行时发布到Sonatype快照仓库。 例如,当PR合并时,流水线运行,但也可以手动触发。
  • 当向GitHub推送新标签时进行发布部署。(作为发布过程的一部分)

发布过程

要通过CI/CD流水线发布新版本,请按照以下说明操作。

  • 前往“操作”(1)
  • > 主要流水线(2)
  • 单击“运行工作流”按钮(3)
  • 使用“发布库”下拉菜单选择一个semver发布类型(4)
  • “运行工作流”(5)

发布流程

发布流程包括

  • 执行流水线运行(包括构建和测试)以执行发布插件(6)
  • 发布插件首先设置并提交新版本(7a)
  • 创建并推送一个新标签(7b)
  • 将主分支设定为下一个快照版本(7c)

主要流水线

新版本会自动发布到Maven Central!

新版本

安全性和CodeQL分析

常见漏洞和曝光(CVE)

库的gradle依赖项会通过 CVE 使用 Trivy 进行扫描。扫描结果可以在“安全性 > 漏洞警报 > 代码扫描”下进行查看和管理。

Trivy 是一个开源的漏洞扫描工具,能够快速识别容器镜像和应用程序中的安全漏洞,是增强容器化环境安全性的宝贵工具。

触发扫描的方式包括:

  1. 每次主要CI/CD流水线运行
  2. 定期(每周)(参考

代码扫描

请参考GitHub官方文档以了解更多细节。

GitHub CodeQL分析

此外,代码库经过 GitHub CodeQL 进行分析。请参考 官方文档 以了解更多关于 CodeQL 的信息。

Javadoc

通过 gradle 生成的 Javadoc 网站,由 CI/CD 流水线 '发布' 到 GitHub Pages。除了每个发布版本外,还会发布当前快照版本(main 分支)作为 current

-> 实时预览

javadoc

使用 Renovate 实现自动依赖更新

启用 renovate 的推荐方式是使用 Renovate GitHub App。这个模板已经预先配置了 renovate.json

Renovate(RenovateBot)是一个开源工具,通过扫描代码库,识别过时的依赖项,并生成自动拉取/合并请求来自动更新软件依赖项。

推荐阅读: 程序员如何成为”时间管理大师“

本文链接: Java库开发