如何根据特定命令 运行 执行任务?

How to run a task on particular command?

我正在使用 https://github.com/sbt/sbt-native-packager and https://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命令执行。 如何存档?

由于在执行任务之前需要修改状态,请尝试像这样定义自定义命令:

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执行命令。