设置如下的别名:
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
答案 0 :(得分:3)
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,然后重新启用。 Elixir 1.3通过提供rerun/2
函数来完成任务的reenable
和run
,从而简化了这一过程。 https://github.com/elixir-lang/elixir/pull/4394