View Source mix run (Mix v1.17.3)

Runs the current application.

mix run starts the current application dependencies and the application itself. The application will be compiled if it has not been compiled yet or it is outdated.

mix run may also run code in the application context through additional options. For example, to run a script within the current application, you may pass a filename as argument:

$ mix run my_app_script.exs arg1 arg2 arg3

Code to be executed can also be passed inline with the -e option:

$ mix run -e "DbUtils.delete_old_records()" -- arg1 arg2 arg3

In both cases, the command-line arguments for the script or expression are available in System.argv/0. This mirrors the command line interface in the elixir executable.

For starting long running systems, one typically passes the --no-halt option:

$ mix run --no-halt

The --no-start option can also be given and the current application, nor its dependencies will be started. Alternatively, you may use mix eval to evaluate a single expression without starting the current application.

If you need to pass options to the Elixir executable at the same time you use mix run, it can be done as follows:

$ elixir --sname hello -S mix run --no-halt

This task is automatically re-enabled, so it can be called multiple times with different arguments.

Command-line options

  • --eval, -e - evaluates the given code
  • --require, -r - executes the given pattern/file
  • --parallel, -p - makes all requires parallel
  • --preload-modules - preloads all modules defined in applications
  • --no-archives-check - does not check archives
  • --no-compile - does not compile even if files require compilation
  • --no-deps-check - does not check dependencies
  • --no-elixir-version-check - does not check the Elixir version from mix.exs
  • --no-halt - does not halt the system after running the command
  • --no-mix-exs - allows the command to run even if there is no mix.exs
  • --no-start - does not start applications after compilation