如何在特定命令上运行任务?

时间:2019-06-13 07:11:28

标签: scala sbt sbt-native-packager sbt-plugin sbt-git

我正在使用https://github.com/sbt/sbt-native-packagerhttps://github.com/sbt/sbt-git插件。

当我运行以下命令时:

    # docker image
    sbt docker:publishLocal

我想执行此任务:

    git.useGitDescribe := true
    git.formattedShaVersion := git.gitHeadCommit.value map { _ =>
      git.gitCurrentTags.value.head
    }

    Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)

以上任务只能由docker:publishLocal命令执行。 如何存档?

1 个答案:

答案 0 :(得分:1)

由于在执行任务之前需要修改状态,因此请尝试定义自定义命令,如下所示:

commands += Command.command("publishLocalWithGit") { state =>
  """set git.useGitDescribe := true""" ::
  """set git.formattedShaVersion := git.gitHeadCommit.value map { _ => git.gitCurrentTags.value.head }""" ::
  """set Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)""" ::
  """docker:publishLocal""" ::  state
}

使用sbt publishLocalWithGit执行命令。