我希望有一个命令publish-snapshot可以publish使用修改后的version设置运行任务(该设置将在执行命令时计算).
我想出了如何获取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)
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这种行为?
Rog*_*ach 20
在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
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*ney 12
这实际上对我不起作用.我正在使用SBT 0.13.7
根据上面的例子调整我必须做的事情,我必须做以下事情:
def publishSnapshot = Command.command("publish-snapshot") { state =>
val extracted = Project extract state
val newState = extracted.append(Seq(version := "newVersion"), state)
val (s, _) = Project.extract(newState).runTask(publish in Compile, newState)
s
}
Run Code Online (Sandbox Code Playgroud)
或者做:
def publishSnapshot = Command.command("publish-snapshot") { state =>
val newState =
Command.process("""set version := "newVersion" """, state)
val (s, _) = Project.extract(newState).runTask(publish in Compile, newState)
s
}
Run Code Online (Sandbox Code Playgroud)
小智 5
要通过命令更新任意设置,请执行以下操作:
def updateFoo = Command.command("updateFoo") { state =>
val extracted = Project extract state
import extracted._
println("'foo' set to true")
//append returns state with updated Foo
append(Seq(foo := true), state)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3832 次 |
| 最近记录: |