何时在Elixir中使用仅编译依赖项

何时在Elixir中使用仅编译依赖项,elixir,exrm,Elixir,Exrm,在我的mix.exs中只在deps中指定依赖项,而不在应用程序中指定运行时依赖项,何时才合适 我原以为applications是在启动我自己的应用程序之前需要启动的实际应用程序,但我遇到了一个问题,exrm没有放入Jazz库(我认为它只包含纯函数)直到我在应用程序中加入:jazz一个OTP应用程序更像是一个组件—一组可以(但不需要)运行某些进程的模块和函数。如果OTP应用程序没有启动自己的监控树,则称为库应用程序。无论哪种方式,如果在运行时使用某些libs函数,则需要将其指定为运行时dep 相反

在我的
mix.exs
中只在
deps
中指定依赖项,而不在
应用程序中指定运行时依赖项,何时才合适


我原以为
applications
是在启动我自己的应用程序之前需要启动的实际应用程序,但我遇到了一个问题,
exrm
没有放入
Jazz
库(我认为它只包含纯函数)直到我在
应用程序中加入
:jazz

一个OTP应用程序更像是一个组件—一组可以(但不需要)运行某些进程的模块和函数。如果OTP应用程序没有启动自己的监控树,则称为库应用程序。无论哪种方式,如果在运行时使用某些libs函数,则需要将其指定为运行时dep

相反,编译时依赖关系只确保第三方代码在本地(在您的开发/构建机器上)获取和可用。如果第三方代码在运行时之外发挥其神奇作用,这将非常有用。一个例子可以是我自己的或纯Erlang模拟库。在第一种情况下,ExActor在编译期间发挥其魔力,而在第二种情况下,您只需要在测试期间使用模拟库