率直に言って、Erlangでこれを行うための標準ツールは今のところ不必要に迷惑です。私は、アプリケーションのコールバックモジュールに次の定型文を配置する傾向があります。
-module(myapp_app).
-export([start/0]).
start() -> a_start(myapp, permanent).
a_start(App, Type) ->
start_ok(App, Type, application:start(App, Type)).
start_ok(_App, _Type, ok) -> ok;
start_ok(_App, _Type, {error, {already_started, _App}}) -> ok;
start_ok(App, Type, {error, {not_started, Dep}}) ->
ok = a_start(Dep, Type),
a_start(App, Type);
start_ok(App, _Type, {error, Reason}) ->
erlang:error({app_start_failed, App, Reason}).
次に、erlangコマンドラインに追加-s myapp_app
すると、アプリとそのすべての依存関係が再帰的に起動します。なぜこの関数がアプリケーションモジュールにないのかわかりません:)
私のErlangFactory2012 SFBayサンプルアプリには、このカスタムerlangアプリスタートアップコードの実用的な例があります。