[英]How to launch multiple applications from mix.exs?
我有一个 Elixir 应用程序,其中 lib/ 文件夹中有两个应用程序:
myproject/lib/app1 myproject/lib/app2
他们都有使用应用程序的文件:
myproject/lib/app1.exs myproject/lib/app2.exs
他们每个人都实现了start
并产生了一个监督树。
在myproject/mix.exs
我试过:
def application do
[
mod: {app1, []},
{app2, []},
applications: [:foo, :bar]
]
end
但我得到的只是与{app2, []}
的语法错误。
这样的事情甚至可能吗? 如果没有,在 Elixir 中使用监督树启动单独应用程序的正确方法是什么?
您应该将app2添加为app1的依赖项并在应用程序中调用它,例如:
适用于app2的mix.exs:
#...
def application do
[
mod: {My.App2, []},
applications: [:logger]
]
end
defp deps do
[
...
]
end
#...
end
适用于app1的mix.exs:
def application do
[
mod: {My.App1, []},
applications: [:logger, :my_app2]
]
end
defp deps do
[
{:my_app2, in_umbrella: true}
]
end
# ...
end
如果两个应用程序都在同一个保护伞中就是这种情况。 如果没有,只需添加my_app2(从十六进制,路径或git)。
有关依赖项和伞状项目的更多信息,请查看@ http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.html
如果 app1 负责启动 app2 是有意义的,那么另一种选择是在app1
中适当使用Application.start(app2)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.