设置别名时,例如:
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
函数来使这变得更容易,该函数可以为任务执行 reenable
和 run
操作。 https://github.com/elixir-lang/elixir/pull/4394
关于Elixir:混合别名,一个别名中有两个 `run` 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846041/