3

lib/ フォルダー内に 2 つのアプリケーションを含む Elixir アプリがあります。

myproject/lib/app1 myproject/lib/app2

どちらも Application を使用するファイルを持っています:

myproject/lib/app1.exs myproject/lib/app2.exs

それらはそれぞれstart、監視ツリーを実装して生成します。

myproject/mix.exs私が試した:

  def application do
    [
      mod: {app1, []},
           {app2, []},
      applications: [:foo, :bar]
    ]
  end

しかし、私が得るのは、行の構文エラーだけ{app2, []}です。

そのようなことは可能ですか?そうでない場合、Elixir で監視ツリーを使用して個別のアプリケーションを起動する正しい方法は何ですか?

4

1 に答える 1

1

app2 を app1 の依存関係として追加し、次のようにアプリケーションで呼び出す必要があります。

app2 の mix.ex:

  #...
  def application do
    [
      mod: {My.App2, []},
      applications: [:logger]
    ]
  end

  defp deps do
    [
      ...
    ]
  end
  #...
end

app1 の mix.ex:

  def application do
    [
      mod: {My.App1, []},
      applications: [:logger, :my_app2]
    ]
  end

  defp deps do
    [
      {:my_app2, in_umbrella: true}
    ]
  end
  # ...
end

これは、両方のアプリが同じ傘下にある場合に当てはまります。そうでない場合は、(16 進数、パス、または git から) my_app2 を追加するだけです。

依存関係と包括的なプロジェクトの詳細については、@ http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.htmlをご覧ください。

于 2016-07-25T09:02:32.780 に答える