在混合文件依赖项中,“ runtime:false”是什么意思?

时间:2018-10-23 22:39:50

标签: elixir otp mix

摘自mix deps文档:

  

:runtime-依赖项是否是运行时应用程序的一部分。   如果在:applications中没有提供def application键   您的mix.exs文件,Mix将自动包括所有依赖项   运行时应用程序,除非给出了runtime: false。默认值   真实。

根据mix compile.app文档:

  

:applications-您的应用程序所依赖的所有应用程序位于   运行。默认情况下,此列表是根据您的   依赖性。混合和其他工具使用应用程序列表是为了   在启动应用程序本身之前,先启动依赖项。

这是否意味着将runtime: false添加到依赖项将使其作为应用程序监视树的一部分启动,但其功能在编译时可用?

1 个答案:

答案 0 :(得分:4)

就像您提到的,情况确实如此。启动主应用程序时,标记依赖项runtime: false不会将其作为应用程序监视树的一部分启动。

在Elixir 1.4之前,我们必须通过将其放入applications中来分别指定需要启动的应用程序:

def application do
  [applications: [:logger, :bamboo]]
end

现在,我们改为使用extra_applications并标记特定的依赖项runtime: false,以便在运行时将其从应用程序列表中删除。