scala - 更改 build.sbt 自定义任务中的版本

标签 scala sbt version

我在 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/

相关文章:

linux - 版本回滚

mysql - 飞行 route 连接超时

clojure - 如何在 REPL 中显示 Clojure 版本?

scala - 在标准任务之前/之后自动运行自定义任务

java - `Import from illegal package` 错误

scala - 如何在(akka)Actor 中处理多个 promise ?

java - sbt 目录结构中非托管 jar 的 lib 目录在哪里?

scala - 如何在子项目中引用自定义 SBT 设置

scala - 案例类中的静态函数(Scala)

scala - 在 Spark Streaming 中使用 mapWithState 指定超时