伞应用程序中的共享代码

Ker*_*ael 5 elixir

我的伞式应用程序有以下目录结构:

umbrella_app/
    _build/
    apps/
      client/
         config/
         lib/
           client.ex
         test/
       server/
         ...
    config/
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在内部某处编写代码umbrella_app,可以从我的应用程序访问client并且server无需创建另一个子应用程序?

例如 :

# umbrella_app/apps/client/lib/client.ex

defmodule UmbrellaApp.Client do
  UmbrellaApp.some_function()
end
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 7

是的。在保护伞内创建另一个应用程序。假设您命名了该应用程序shared,那么您可以将其添加到其他应用程序 mix.exs 依赖项中:

defp deps do
  [
    ...
    {:shared, in_umbrella: true},
    ...
  ]
end
Run Code Online (Sandbox Code Playgroud)

现在,您可以像在同一个应用程序中一样调用代码Shared.do_something