[英]Rake like dependency functionality in Elixir Mix tasks?
在Rake中,可以指定任务之间的依赖关系。 然后,引擎将构建一个依赖关系树,并按照依赖关系的顺序执行这些任务,并且每个任务仅执行一次。
e剂/混合物中是否有类似的机制?
task seed_users: [:seed_companies] do
# actions
end
task :seed_companies do
# actions
end
我认为没有任何内置功能,但是您可以使用Mix.Task.run/2
来实现:
defmodule Mix.Tasks.SeedUsers do
def run(_args) do
IO.puts "started seed_users"
Mix.Task.run "seed_companies"
Mix.Task.run "seed_companies"
IO.puts "completed seed_users"
end
end
defmodule Mix.Tasks.SeedCompanies do
def run(_args) do
IO.puts "started seed_companies"
IO.puts "completed seed_companies"
end
end
示例运行:
$ mix seed_users
started seed_users
started seed_companies
completed seed_companies
completed seed_users
请注意,如果Mix.Task.run/2
已运行一次,则它不会运行该任务,因此,如上例中所述,如果您两次调用Mix.Task.run/2
,它将仅运行一次。 如果您想多次运行任务,则需要在每次运行后调用Mix.Task.reenable/1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.