sbt-dynver 使用教程
1. 项目介绍
sbt-dynver
是一个用于 SBT(Simple Build Tool)的插件,旨在从 Git 仓库中动态设置项目的版本号。该插件通过分析 Git 标签和提交历史,自动生成项目的版本号,从而简化了版本管理的过程。sbt-dynver
的设计灵感来源于 Mercurial 的版本管理方式和 sbt-git
插件中的 GitVersioning AutoPlugin
。
主要功能
- 动态版本设置:根据 Git 仓库中的最新标签和提交历史自动生成版本号。
- 检测前一个版本:帮助自动进行二进制兼容性检查。
- 灵活配置:支持自定义版本号的格式和前缀。
2. 项目快速启动
安装
首先,将 sbt-dynver
插件添加到你的 SBT 项目中。你可以在 project/plugins.sbt
文件中添加以下内容:
addSbtPlugin("com.github.sbt" % "sbt-dynver" % "x.y.z") // 替换 x.y.z 为最新版本号
配置
确保在 build.sbt
中没有手动设置 version
,因为 sbt-dynver
会自动覆盖它。
// build.sbt
// 不要手动设置 version
// version := "1.0.0"
使用
在 CI 环境中,如果你使用的是 GitHub Actions 和 actions/checkout
,你可能需要设置 fetch-depth: 0
以避免浅克隆导致的问题:
- uses: actions/checkout@v3
with:
fetch-depth: 0
如果你手动运行 Git 命令,可能需要运行以下命令:
git fetch --unshallow
git fetch --tags
3. 应用案例和最佳实践
应用案例
假设你正在开发一个库,并且希望每次发布时都能自动生成版本号。使用 sbt-dynver
可以轻松实现这一点。你只需在每次发布时打上 Git 标签,sbt-dynver
会自动根据标签生成版本号。
最佳实践
- 使用 Git 标签:确保每次发布时都打上 Git 标签,标签名以
v
开头(例如v1.0.0
)。 - 避免手动设置版本:不要在
build.sbt
中手动设置version
,让sbt-dynver
自动处理。 - CI/CD 集成:在 CI/CD 流程中使用
fetch-depth: 0
以确保获取完整的 Git 历史。
4. 典型生态项目
sbt-dynver
通常与其他 SBT 插件和工具一起使用,以增强项目的构建和发布流程。以下是一些典型的生态项目:
- sbt-git:用于与 Git 仓库交互的 SBT 插件。
- sbt-release:用于自动化发布流程的 SBT 插件。
- sbt-ci-release:用于在 CI 环境中自动发布项目的 SBT 插件。
通过结合这些工具,你可以构建一个完整的自动化发布流程,从版本管理到发布再到二进制兼容性检查,全部自动化完成。