【问题标题】:How to handle deps while using rebar to release?使用rebar释放时如何处理deps?
【发布时间】:2013-07-03 04:39:01
【问题描述】:

我使用rebar generate 来处理释放,但是当我启动 应用程序,找不到我使用的deps。`

我可以使用 erl -pa ./ebin ./deps/*/ebin -s myapp 手动启动应用程序。

我想知道如何配置 rebar.configreltool.config 来处理 依赖?谢谢。

【问题讨论】:

    标签: erlang rebar


    【解决方案1】:

    为了使 reltool 生成包含依赖项的版本,您需要将它们添加到 reltool.config。我有一个名为drill_instructor 的应用程序,它具有以下reltool.config{app, stdlib, [{incl_cond, include}]}, 之类的行告诉 reltool 将该应用程序包含在发布中。我还在the lib_dirs 设置中添加了部门。

    {sys, [
       {lib_dirs, ["../deps"]},
       {erts, [{mod_cond, derived}, {app_file, strip}]},
       {app_file, strip},
       {rel, "drill_instructor", "1",
        [
         kernel,
         stdlib,
         sasl,
         crypto,
         ranch,
         jiffy,
         cowboy,
         jiffy,
         drill_instructor
        ]},
       {rel, "start_clean", "",
        [
         kernel,
         stdlib
        ]},
       {boot_rel, "drill_instructor"},
       {profile, embedded},
       {incl_cond, exclude},
       {excl_archive_filters, [".*"]}, %% Do not archive built libs
       {excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)",
                           "^erts.*/(doc|info|include|lib|man|src)"]},
       {excl_app_filters, ["\.gitignore"]},
       {app, sasl,   [{incl_cond, include}]},
       {app, crypto,   [{incl_cond, include}]},
       {app, stdlib, [{incl_cond, include}]},
       {app, kernel, [{incl_cond, include}]},
       {app, cowboy, [{incl_cond, include}]},
       {app, ranch, [{incl_cond, include}]},
       {app, jiffy, [{incl_cond, include}]},
       {app, drill_armory, [{incl_cond, include}]},
       {app, drill_instructor, [{incl_cond, include}, {lib_dir, ".."}]}
      ]}.
    
    {target_dir, "drill_instructor"}.
    
    {overlay, [
           {mkdir, "log/sasl"},
           {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
           {copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"},
           {copy, "files/drill_instructor", "bin/drill_instructor"},
           {copy, "files/drill_instructor.cmd", "bin/drill_instructor.cmd"},
           {copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
           {copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"},
           {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
           {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
          ]}.
    

    在 rebar.config 中,我还添加了 rel 作为sub_dir

    {sub_dirs, ["rel"]}.
    

    【讨论】:

    • 谢谢,密钥是{lib_dirs, ["../deps"]}
    猜你喜欢
    • 2013-12-11
    • 2015-08-16
    • 2012-05-02
    • 2013-12-26
    • 2015-09-12
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多