Pap*_*ipo 6 erlang dependency-management rebar
我想在我的应用程序中使用一些库,比如https://github.com/Panmind/erlang-ruby-marshal.该repo拥有一个src目录,但没有.app文件(因为它不是一个应用程序),所以我不能使用get-deps.
我尝试了另一种方法,在sub_dirs中添加了一个libs目录,并将repo添加为git子模块,但是rebar不会编译它的任何文件.我猜这个rebar只编译otp应用程序,但不仅仅是编译与应用程序无关的.erl文件.
你如何管理这种依赖?我想避免将文件复制到我的app目录,因为我不认为它们属于那里,我有点像git子模块方法,它允许我跟踪我正在使用的lib版本.
最近的 rebar 支持raw依赖项选项。当此选项是特定的时,rebar 不要求依赖项具有标准的 Erlang/OTP 布局,该布局假定存在“src/dependency_name.app.src”或“ebin/dependency_name.app”文件(请参阅此处的更多详细信息) 。
例如:
{deps, [
{erlang_ruby_marshal, "",
{git, "https://github.com/Panmind/erlang-ruby-marshal", {branch, master}},
[raw]}
]}.
Run Code Online (Sandbox Code Playgroud)
请注意,rebar 现在可以获取它,但仍然无法编译它。正如其他评论者指出的那样,这种依赖项没有理由不应该有一个.app文件。我会分叉存储库并将.app文件添加到其中。