我想要一个命令 publish-snapshot
来运行带有修改后的 version
设置的 publish
任务(该设置将被计算在执行命令时)。
我想出了如何在命令中获取 version
的当前值,Project.runTask("task", "scope", ...)
似乎成为调用 publish
任务的正确调用。
唯一让我感到困惑的是如何使用新版本值修改 State
实例。我所有的尝试似乎都对原始版本设置没有任何影响。
我最后一次尝试:
val printVers = TaskKey[Unit]("printvers")
val printVersTask = TaskKey[Unit]("printvers") <<= {version map println}
def publishSnapshot = Command.command("publish-snapshot") { state =>
val newState = SessionSettings.reapply(state.get(sessionSettings).get.appendRaw(version := "???"), state)
Project.runTask(printVers in Compile, newState, true)
state
}
lazy val root = Project("main", file("."),
settings =
Defaults.defaultSettings ++
Seq(printVersTask)).settings(commands += publishSnapshot)
有什么方法可以解决这个问题吗?
最佳答案
在 sbt
邮件列表的帮助下,我能够创建如下解决方案:
def publishSnapshot = Command.command("publish-snapshot") { state =>
val extracted = Project extract state
import extracted._
val eVersion = getOpt(version).get // getting current version
runTask(publish in Compile,
append(Seq(version := "newVersion"), state),
true
)
state
}
关于scala - 如何更改 SBT 命令中的设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18821534/