For reltool to generate a release that includes dependencies, you need to add them to reltool.config . I have an application called drill_instructor that has the following reltool.config . Lines like {app, stdlib, [{incl_cond, include}]}, tell reltool to include this application in the release. I also added deps to the setting of 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"} ]}.
In rebar.config, I also added rel as sub_dir :
{sub_dirs, ["rel"]}.