erlang - 使用钢筋处理外部库

标签 erlang dependency-management rebar

我想在我的应用程序中使用一些库,例如 https://github.com/Panmind/erlang-ruby-marshal .该 repo 包含一个 src 目录,但没有 .app 文件(因为它不是应用程序),所以我不能使用 get-deps。

我尝试了另一种方法,添加了 sub_dirs 中的 dir 并将 repo 添加为 git 子模块,但 rebar 不会编译它的任何文件。我猜 rebar 只编译 otp 应用程序,而不仅仅是不绑定(bind)到应用程序的 .erl 文件。

你如何管理这些依赖关系?我想避免将文件复制到我的应用程序目录,因为我认为它们不属于那里,而且我有点喜欢 git 子模块方法,它允许我跟踪我正在使用的 lib 版本。

最佳答案

最近的钢筋支持依赖项的 raw 选项。当此选项是特定的时,rebar 不需要依赖项具有标准 Erlang/OTP 布局,该布局假定存在“src/dependency_name.app.src”或“ebin/dependency_name.app”文件(请参阅更多详细信息 here) .

例如:

{deps, [
  {erlang_ruby_marshal, "",
    {git, "https://github.com/Panmind/erlang-ruby-marshal", {branch, master}},
    [raw]}
]}.

请注意,rebar 现在可以获取它,但它仍然无法编译它。正如其他评论者所指出的那样,这个依赖项没有理由不应该有一个 .app 文件。我会 fork 存储库并将 .app 文件添加到其中。

关于erlang - 使用钢筋处理外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510559/

相关文章:

Grails log4j SMTPAppender NoClassDefFoundError

go - 不需要的 Glide 导入

erlang - 如何设置钢筋的包含目录

erlang - 作为钢筋依赖的雅司病

recursion - erlang 如何处理混合尾递归的 case 语句

mysql - Erlang 和 mysql

module - 如何将模块中的函数分配给 Erlang 中的变量?

java - 如果您作为一个团队工作,那么在 android 中处理库依赖项的最佳方法是什么?

configuration - 将 Erlang 配置文件(用于多个应用程序)应用于 Common Test with rebar

Erlang/OTP 的日志库