2016-07-24 79 views
2

我与的lib /文件夹内的两个应用的药剂应用:如何从mix.exs启动多个应用程序?

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中启动监督树的单独申请的正确方法是什么?

+0

你可以试试'做混合运行app1.exs,运行app2.exs' – coderVishal

回答

1

您应该添加APP2为APP1的依赖,并调用它的应用,如:

mix.exs为APP 2:

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

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

mix.exs对APP:

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

相关问题