2016-07-24 15 views
2

Ich habe ein Elixir App mit zwei Anwendungen innerhalb des lib/Ordner:Wie starten Sie mehrere Anwendungen von mix.exs?

myproject/lib/app1 myproject/lib/app2

Beide Dateien haben, die Anwendung verwenden: eine Aufsicht

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

Sie verfügen jeweils implementieren start und laichen Baum.

In myproject/mix.exs Ich habe versucht:

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

Aber alles, was ich mit {app2, []} auf der Linie Syntaxfehler erhalten.

Ist so etwas überhaupt möglich? Wenn nicht, was ist der richtige Weg, separate Anwendungen mit Supervisor-Bäumen in Elixir zu starten?

+0

können Sie versuchen, 'Mix app1.exs laufen, laufen app2.exs' – coderVishal

Antwort

1

Sie sollten app2 als Abhängigkeit von app1 hinzufügen und es in Anwendungen nennen, wie:

mix.exs für app2:

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

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

mix.exs für app1:

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

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

Dies ist der Fall, wenn sich beide Apps im selben Schirm befinden. Wenn nicht, füge einfach my_app2 hinzu, so wie du es tust (von hex, path oder git).

Weitere Informationen über Abhängigkeiten und Regenschirm Projekte, werfen Sie einen Blick @http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.html