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

Posted

技术标签:

【中文标题】如何在特定命令上运行任务?【英文标题】:How to run a task on particular command? 【发布时间】:2019-10-27 17:33:06 【问题描述】:

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

【问题讨论】:

【参考方案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 执行命令。

【讨论】:

以上是关于如何在特定命令上运行任务?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建将使用特定配置文件执行 bootRun 的 gradle 任务?

如何在特定设备上运行命令“ionic run android”?

如何使用 ScheduledExecutorService 每天在特定时间运行特定任务?

如何在使用 opsworks 部署时仅在特定层中的第一个实例上运行命令?

AWS EC2:允许特定用户运行特定命令

如何在 Linux 中删除在特定端口上运行的进程