【问题标题】:How to launch multiple applications from mix.exs?如何从 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

标签: elixir erlang-otp elixir-mix


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多