簡體   English   中英

如何從 mix.exs 啟動多個應用程序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM