Mix v1.4.0 mix compile.app View Source

Writes an .app file.

An .app file is a file containing Erlang terms that defines your application. Mix automatically generates this file based on your mix.exs configuration. You can learn more about OTP applications by seeing the documentation for the Application module.

In order to generate the .app file, Mix expects your application to have both :app and :version keys. Furthermore, you can configure the generated application by defining an application/0 function in your mix.exs with the following options:

  • :applications - all applications your application depends on at runtime. By default, this list is automatically inferred from your dependencies. Any extra Erlang/Elixir dependency must be specified in :extra_applications. Mix and other tools use the application list in order to start your dependencies before starting the application itself.

  • :extra_applications - a list of Erlang/Elixir applications that you want started before your application. For example, Elixir’s :logger or Erlang’s :crypto.

  • :registered - the name of all registered processes in the application. If your application defines a local GenServer with name MyServer, it is recommended to add MyServer to this list. It is most useful in detecting conflicts between applications that register the same names.

  • :mod - specifies a module to invoke when the application is started. It must be in the format {Mod, args} where args is often an empty list. The module specified must implement the callbacks defined by the Application module.

  • :env - default values for the application environment. The application environment is one of the most common ways to configure applications.

Let’s see an example application/0 function:

def application do
  [mod: {MyApp, []},
   env: [default: :value],
   applications: [:crypto]]

Besides the options above, .app files also expect other options like :modules and :vsn, but these are automatically added by Mix.

Command line options

  • --force - forces compilation regardless of modification times

Link to this section Summary


A task needs to implement run which receives a list of command line args

Link to this section Functions

A task needs to implement run which receives a list of command line args.

Callback implementation for Mix.Task.run/1.