Elixir:混合别名,一个别名中有两个 `run` 任务

标签 elixir elixir-mix

设置别名时,例如:

defp aliases do
    [
      test_run: ["run -e 'IO.puts(\"One\")'", "run -e 'IO.puts(\"Two\")'"]
    ]
end

mix test_run 的结果应该是

$ mix test_run
One
Two

但它只执行第一个任务并打印

$ mix test_run
One

不确定这是否是预期的行为,但在提出问题之前我想确定一下。 这是重现错误的存储库: https://github.com/wende/mix_run_twice

最佳答案

Mix 不允许任务运行两次。但是,您可以使用 Mix.Task.reenable/1再次运行它。

  test_run: ["run -e 'IO.puts(\"One\"); Mix.Task.reenable(:run)'", "run -e 'IO.puts(\"Two\")'"]

您必须在第一次运行结束时重新启用该任务,否则它将永远不会执行第二个任务。你不能做这样的事情:

 ["run -e 'IO.puts(\"One\")'", "run -e 'Mix.Task.reenable(:run)'"]

我建议创建一个自定义混合任务,调用 Mix.Task.run/2对于您想要运行的每个任务,随时重新启用。 Elixir 1.3 将通过提供一个 rerun/2 函数来使这变得更容易,该函数可以为任务执行 reenablerun 操作。 https://github.com/elixir-lang/elixir/pull/4394

关于Elixir:混合别名,一个别名中有两个 `run` 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846041/

相关文章:

elixir - 用于生产和开发的不同供应商文件

elixir - 如何在版本 (elixir/exrm) 上运行 'mix' 命令?

ubuntu - (File.Error) 无法读取文件 "": no such file or directory

docker - 没有 Rabbit MQ Connection 的 Docker 容器内的 Elixir 发布

elixir - IEx.Helper.h 的终端友好输出,同时输出到非 TTY 的内容

elixir - 如何在 Elixir 中制作具有开始、长度和增量的整数列表?

elixir - Absinthe.Plug 不可用

erlang - Elixir 和 Mix 如何制作守护进程?

zip - 解压缩 Zip 压缩的二进制字符串

elixir - 将函数传递给 defimpl "for"选项