Mixfile 依赖项中的“runtime: false”是啥意思?

Posted

技术标签:

【中文标题】Mixfile 依赖项中的“runtime: false”是啥意思?【英文标题】:What does `runtime: false` mean in the Mixfile dependencies?Mixfile 依赖项中的“runtime: false”是什么意思? 【发布时间】:2019-03-28 06:20:43 【问题描述】:

来自mix deps 文档:

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

根据mix compile.app docs:

:applications - 您的应用程序依赖的所有应用程序 运行。默认情况下,此列表会自动从您的 依赖关系。 Mix 和其他工具使用应用程序列表来 在启动应用程序之前启动您的依赖项。

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

历史旁注特别有用,谢谢!

以上是关于Mixfile 依赖项中的“runtime: false”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

为啥有时会跳过 maven 依赖项中的版本号?

依赖项中的 JUnit 版本错误

如何从 Gradle 中的所有依赖项中忽略特定的传递依赖项

FastAPI:如何访问依赖项中的 APIRoute 对象

gradle - 依赖项中的库重复

为啥即使我的 maven 依赖项中有第三方依赖项,也只需要 OSGi 容器中的第三方依赖项?