如何从 mix.exs 启动多个应用程序?
Posted
技术标签:
【中文标题】如何从 mix.exs 启动多个应用程序?【英文标题】:How to launch multiple applications from mix.exs? 【发布时间】:2016-11-28 04:01:29 【问题描述】:我有一个 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 中使用监督树启动单独应用程序的正确方法是什么?
【问题讨论】:
你可以试试mix do run app1.exs, run app2.exs
【参考方案1】:
您应该将 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(来自 hex、path 或 git)。
更多关于依赖和伞形项目的信息,请看@http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.html
【讨论】:
以上是关于如何从 mix.exs 启动多个应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Mixfile 依赖项中的“runtime: false”是啥意思?