在sbt 0.13.16中如何按任务作用域设置version值?
解决sbt 0.13.16中根据任务动态设置version的问题
我来帮你搞定这个版本配置的问题!在sbt 0.13.x版本里,你想要给publishLocal任务单独加-SNAPSHOT后缀的思路完全正确,只是可能配置细节没处理到位才导致没生效。
正确的配置方式
首先假设你已经定义了基础版本号,这里提供两种常见场景的配置:
场景1:直接写死基础版本
val appVersion = "1.0.0" // 全局基础版本 version := appVersion // 为publishLocal任务单独设置带SNAPSHOT的版本 version in publishLocal := appVersion + "-SNAPSHOT"
场景2:用SettingKey定义动态基础版本
如果你的版本号是从外部文件读取或者动态生成的,用SettingKey定义后,记得要通过.value获取实际值:
val appVersion = settingKey[String]("项目的基础版本号") appVersion := "1.0.0" version := appVersion.value version in publishLocal := appVersion.value + "-SNAPSHOT"
验证配置是否生效
你可以通过以下命令快速确认配置效果:
- 查看全局基础版本:
sbt show version,输出应为1.0.0 - 查看publishLocal任务对应的版本:
sbt show publishLocal::version,输出应为1.0.0-SNAPSHOT
为什么之前的配置可能没生效?
如果你的appVersion是SettingKey类型,但你直接写了appVersion + "-SNAPSHOT",这时候拼接的是SettingKey对象本身而非它的实际值,版本号会变成类似SettingKey(appVersion)-SNAPSHOT的错误格式,所以一定要用.value来获取设置的实际值。
另外你之前尝试的新增配置方案虽然可行,但确实没必要,直接给publishLocal任务单独设置version是最简洁的方案。
内容的提问来源于stack exchange,提问作者lorilan
相关产品推荐
相关产品推荐

