我在 build.sbt 中定义了一个自定义任务:
val doSmth = taskKey[Unit]("smth")
doSmth := {
version := "1.0-SNAPSHOT"
}
但它不会改变版本。我真正想要的是自定义 sbt 发布任务,它将始终将相同的版本发布到我添加的存储库。除此之外,正常的 sbt 组装过程使用增量版本方案。所以我想创建一个任务来设置版本,执行 sbt 发布,然后将版本返回到以前的值。我已经完成了所有操作,但无法更改版本。有没有办法从 build.sbt 更改 sbt 设置的值(因为它们是 vals)?
这可能吗?我想我也可以从 sbtpublish 命令复制代码(正如有人在一个主题中提到的),但在我看来这是最糟糕的解决方案。
谢谢
最佳答案
我找到了一个可能的解决方案,通过更改 sbtpublish
任务的版本,但这在 SBT 中确实很奇怪且不直观。例如,我尝试过
version := sys.env.getOrElse("BUILD_NUMBER", "1.0")
version in publish := "SNAPSHOT-1.0"
我还尝试在测试和编译配置中定义不同的版本:
version in Compile := sys.env.getOrElse("BUILD_NUMBER", "1.0")
version in Test: = "SNAPSHOT-1.0
但我无法让它工作。 SBT 的行为真的很奇怪。是否有可能在一项任务中使用与所有其他任务中的某些设置不同的值?
关于scala - 更改 build.sbt 自定义任务中的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48701025/