exrm had poor support for umbrella projects. It worked by building a release
of each application individually, which in some cases was a fit, and in others, was not at
all the desired result. Distillery has been written with both standard and umbrella projects
in mind, and particularly with the goal of flexible handling of umbrella projects.
If you run
mix release.init in a umbrella project, it will template out a configuration file
which bundles all of the applications in the umbrella under a single release. If you would prefer
exrm’s behaviour of a release per application in the umbrella, run
mix release.init --release-per-app.
You may also define whatever combination of apps to releases you wish. Let’s say you have an umbrella
app_e, you could define any combination of
app_e you want, and their dependencies to
lib_b will be automatically
resolved to pull them in as needed. For instance, maybe you want to release
app_e separately - this would look like the following in
release :app_c_and_d do set version: "0.1.0" set applications: [:app_c, :app_d] end release :app_e do set version: current_version(:app_e) end
As you can see, you have a lot of flexibility in how you handle releases with umbrella projects!