加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读