scala – 如何更改SBT命令中的设置?
发布时间:2020-12-16 09:45:37 所属栏目:安全 来源:网络整理
导读:我想要一个命令publish-snapshot,它将使用修改的版本设置运行发布任务(该设置将在执行命令时计算)。 我知道如何获取版本内部命令的当前值,并且Project.runTask(“task”,“scope”,…)似乎是调用发布任务的正确的调用。 我唯一感到困惑的是如何使用新版
我想要一个命令publish-snapshot,它将使用修改的版本设置运行发布任务(该设置将在执行命令时计算)。
我知道如何获取版本内部命令的当前值,并且Project.runTask(“task”,“scope”,…)似乎是调用发布任务的正确的调用。 我唯一感到困惑的是如何使用新版本值修改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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |