我需要main为我的项目创建一个等效的函数.我需要为项目添加一些依赖项,并使用它们来运行单个函数.我真的不需要一个OTP应用程序,所以我认为这样定义它(与主管和一切)将是一个矫枉过正.
我做了一个测试,并把它放在mix.ex这样的,它的工作原理
def application do
MyModule.main
[applications: [:logger]]
end
Run Code Online (Sandbox Code Playgroud)
但感觉不自然.有更标准的方法吗?
编辑:
将其放入内部application仅在第一次由于某种原因编译时才起作用.
mod为mix.exs application函数添加一个选项:
def application do
[
mod: {MyModule, []},
applications: [:logger]]
...
]
end
Run Code Online (Sandbox Code Playgroud)
然后在该模块中实现Application行为:
defmodule MyModule do
use Application
def start(_type, _args) do
IO.puts "starting"
# some more stuff
end
end
Run Code Online (Sandbox Code Playgroud)
而不是main您在示例中指定的函数,我会使用该start函数,因为它是公认的做法.但是,如果您必须使用该main功能,我相信有一种方法可以覆盖它.只需看看Application行为的文档.
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |