首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sbt-release步骤中更改子项目设置

如何在sbt-release步骤中更改子项目设置
EN

Stack Overflow用户
提问于 2019-06-26 22:23:15
回答 1查看 32关注 0票数 0

我在一些项目中使用了sbt-release插件。我使用的一个步骤是sbt-native-packagerdocker:publish将镜像推送到Docker hub。

sbt-native-packager依赖于dockerUpdateLatest设置来决定是否更新latest标签。缺省值是false,如果是true,它将更新latest

对于一个根目录下没有子项目的项目,我可以使用自定义的ReleaseStep来更改该设置,这取决于我是否要发布SNAPSHOT,即如果版本以SNAPSHOT结束,我不想更新latest标记。

代码语言:javascript
复制
lazy val setDockerReleaseSettings = ReleaseStep(action = oldState => {
  // dockerUpdateLatest is set to true if the version is not a SNAPSHOT
  val extracted = Project.extract(oldState)
  val v = extracted.get(Keys.version)
  val snap = v.endsWith("SNAPSHOT")
  if (!snap) extracted
      .appendWithSession(Seq(dockerUpdateLatest := true), oldState)
  else oldState
})

上面的方法适用于该项目。

对于另一个项目,在根目录下聚合了多个项目。我想做一些像这样的事情

代码语言:javascript
复制
lazy val setDockerReleaseSettings = ReleaseStep(action = oldState => {
  // dockerUpdateLatest is set to true if the version is not a SNAPSHOT
  val extracted = Project.extract(oldState)
  val v = extracted.get(Keys.version)
  val snap = v.endsWith("SNAPSHOT")
  if (!snap) extracted
      .appendWithSession(Seq(dockerUpdateLatest in api := true, dockerUpdateLatest in portal := true), oldState)
  else oldState
})

但它似乎不起作用。我还尝试了dockerUpdateLatest in GlobaldockerUpdateLatest in root,但都无济于事。你知道如何在这些子项目中修改dockerUpdateLatest吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-27 01:45:34

能够用set every dockerUpdateLatest := true解决这个问题。我像这样做了一个定制的ReleaseStep

代码语言:javascript
复制
lazy val createSetDockerUpdateLatestCommand = ReleaseStep(action = state => {
  // dockerUpdateLatest is set to true if the version is not a SNAPSHOT
  val snap = Project.extract(state).get(Keys.version).endsWith("SNAPSHOT")

  val setDockerUpdateLatest = if (!snap)
    Command.command("setDockerUpdateLatest") {
      "set every dockerUpdateLatest := true" ::
      _
    }
  else
    Command.command("setDockerUpdateLatest") {
      "" ::
      _
    }

  state.copy(definedCommands = state.definedCommands :+ setDockerUpdateLatest)
})

然后我运行setDockerUpdateLatest

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56775080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档