Elixir:混合别名,两个“运行”任务在一个别名中

Elixir: Mix aliases, two `run` tasks in one alias

设置别名时:

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 结束时重新启用该任务,否则它永远不会到达第二个任务。你不能这样做:

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

我建议制作一个调用 Mix.Task.run/2 for each task you want to run, reenabling as you go. Elixir 1.3 will make this easier by providing a rerun/2 function that does the reenable and run for a task. https://github.com/elixir-lang/elixir/pull/4394

的自定义混合任务