---
name: "rebar3"
section: "1"
platform: "linux"
package: "rebar3"
version: "3.27.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/rebar3"
---

# rebar3(1)

tool for working with Erlang projects

## NAME

**rebar3** - tool for working with Erlang projects

## SYNOPSIS

**rebar3** **--version**

**rebar3** **help**

**rebar3** *command* \[*options*\] ...

## DESCRIPTION

Rebar3 is an Erlang tool that makes it easy to create, develop, and release Erlang libraries, applications, and systems in a repeatable manner.

Full documentation at *http://www.rebar3.org/*

## ESSENTIAL COMMANDS

For the full command list, see the *COMMANDS* section.

With **rebar3 help \<task\>**, commands and plugins will display their own help information.

- **compile**

  Compile the current project

- **new** (**help \[***template*\])\|*template*

  Show information about templates or use one

- **update**

  Fetch the newest version of the Hex index

- **do** *command*\[,*command*,...\]

  Run one or more commands in a sequence

- **shell**

  Start the current project in a REPL. You can then use **r3:do(***task*) to call it on the project without dropping the current state.

## COMMANDS

- **as**

  Higher order provider for running multiple tasks in a sequence as a certain profiles.

- **clean** \[*-a*\|*--all*\] \[*-p*\|*--profile*\]

  Remove compiled beam files from apps.

-

  *--all*: Clean all apps include deps

-

  *--profile*: Clean under profile. Equivalent to \`rebar3 as \<profile\> clean\`

- **compile** \[*-d*\|*--deps\_only*\]

  Compile apps .app.src and .erl files.

-

  *--deps\_only*: Only compile dependencies, no project apps will be built.

- **cover** \[*-r*\|*--reset*\] \[*-v*\|*--verbose*\] \[*-m*\|*--min\_coverage*\]

  Perform coverage analysis.

-

  *--reset*: Reset all coverdata.

-

  *--verbose*: Print coverage analysis.

-

  *--min\_coverage*: Mandate a coverage percentage required to succeed (0..100)

- **ct** \[*--dir*\] \[*--suite*\] \[*--group*\] \[*--case*\] \[*--label*\] \[*--config*\] \[*--spec*\] \[*--join\_specs*\] \[*--allow\_user\_terms*\] \[*--logdir*\] \[*--logopts*\] \[*--verbosity*\] \[*-c*\|*--cover*\] \[*--cover\_export\_name*\] \[*--repeat*\] \[*--duration*\] \[*--until*\] \[*--force\_stop*\] \[*--basic\_html*\] \[*--stylesheet*\] \[*--decrypt\_key*\] \[*--decrypt\_file*\] \[*--abort\_if\_missing\_suites*\] \[*--multiply\_timetraps*\] \[*--scale\_timetraps*\] \[*--create\_priv\_dir*\] \[*--include*\] \[*--readable*\] \[*-v*\|*--verbose*\] \[*--name*\] \[*--sname*\] \[*--setcookie*\] \[*--sys\_config*\] \[*--compile\_only*\] \[*--retry*\]

  Run Common Tests.

-

  *--dir*: List of additional directories containing test suites

-

  *--suite*: List of test suites to run

-

  *--group*: List of test groups to run

-

  *--case*: List of test cases to run

-

  *--label*: Test label

-

  *--config*: List of config files

-

  *--spec*: List of test specifications

-

  *--join\_specs*: Merge all test specifications and perform a single test run

-

  *--allow\_user\_terms*: Allow user defined config values in config files

-

  *--logdir*: Log folder

-

  *--logopts*: Options for common test logging

-

  *--verbosity*: Verbosity

-

  *--cover*: Generate cover data

-

  *--cover\_export\_name*: Base name of the coverdata file to write

-

  *--repeat*: How often to repeat tests

-

  *--duration*: Max runtime (format: HHMMSS)

-

  *--until*: Run until (format: HHMMSS)

-

  *--force\_stop*: Force stop on test timeout (true \| false \| skip\_rest)

-

  *--basic\_html*: Show basic HTML

-

  *--stylesheet*: CSS stylesheet to apply to html output

-

  *--decrypt\_key*: Path to key for decrypting config

-

  *--decrypt\_file*: Path to file containing key for decrypting config

-

  *--abort\_if\_missing\_suites*: Abort if suites are missing

-

  *--multiply\_timetraps*:

-

  *--scale\_timetraps*: Scale timetraps

-

  *--create\_priv\_dir*: Create priv dir (auto\_per\_run \| auto\_per\_tc \| manual\_per\_tc)

-

  *--include*: Directories containing additional include files

-

  *--readable*: Shows test case names and only displays logs to shell on failures (true \| compact \| false)

-

  *--verbose*: Verbose output

-

  *--name*: Gives a long name to the node

-

  *--sname*: Gives a short name to the node

-

  *--setcookie*: Sets the cookie if the node is distributed

-

  *--sys\_config*: List of application config files

-

  *--compile\_only*: Compile modules in the project with the test configuration but do not run the tests

-

  *--retry*: Experimental feature. If any specification for previously failing test is found, runs them.

- **deps**

  List dependencies

- **dialyzer** \[*-u*\|*--update-plt*\] \[*-s*\|*--succ-typings*\]

  Run the Dialyzer analyzer on the project.

-

  *--update-plt*: Enable updating the PLT. Default: true

-

  *--succ-typings*: Enable success typing analysis. Default: true

- **do**

  Higher order provider for running multiple tasks in a sequence.

- **edoc**

  Generate documentation using edoc.

- **escriptize**

  Generate escript archive.

- **eunit** \[*--app*\] \[*--application*\] \[*-c*\|*--cover*\] \[*--cover\_export\_name*\] \[*-d*\|*--dir*\] \[*-f*\|*--file*\] \[*-m*\|*--module*\] \[*-s*\|*--suite*\] \[*-v*\|*--verbose*\] \[*--name*\] \[*--sname*\] \[*--setcookie*\]

  Run EUnit Tests.

-

  *--app*: Comma separated list of application test suites to run. Equivalent to \`\[{application, App}\]\`.

-

  *--application*: Comma separated list of application test suites to run. Equivalent to \`\[{application, App}\]\`.

-

  *--cover*: Generate cover data. Defaults to false.

-

  *--cover\_export\_name*: Base name of the coverdata file to write

-

  *--dir*: Comma separated list of dirs to load tests from. Equivalent to \`\[{dir, Dir}\]\`.

-

  *--file*: Comma separated list of files to load tests from. Equivalent to \`\[{file, File}\]\`.

-

  *--module*: Comma separated list of modules to load tests from. Equivalent to \`\[{module, Module}\]\`.

-

  *--suite*: Comma separated list of modules to load tests from. Equivalent to \`\[{module, Module}\]\`.

-

  *--verbose*: Verbose output. Defaults to false.

-

  *--name*: Gives a long name to the node

-

  *--sname*: Gives a short name to the node

-

  *--setcookie*: Sets the cookie if the node is distributed

- **get-deps**

  Fetch dependencies.

- **help**

  Display a list of tasks or help for a given task or subtask.

- **new** \[*-f*\|*--force*\]

  Create new project from templates.

-

  *--force*: overwrite existing files

- **path** \[*--app*\] \[*--base*\] \[*--bin*\] \[*--ebin*\] \[*--lib*\] \[*--priv*\] \[*-s*\|*--separator*\] \[*--src*\] \[*--rel*\]

  Print paths to build dirs in current profile.

-

  *--app*: Comma separated list of applications to return paths for.

-

  *--base*: Return the \`base' path of the current profile.

-

  *--bin*: Return the \`bin' path of the current profile.

-

  *--ebin*: Return all \`ebin' paths of the current profile's applications.

-

  *--lib*: Return the \`lib' path of the current profile.

-

  *--priv*: Return the \`priv' path of the current profile's applications.

-

  *--separator*: In case of multiple return paths, the separator character to use to join them.

-

  *--src*: Return the \`src' path of the current profile's applications.

-

  *--rel*: Return the \`rel' path of the current profile.

- **pkgs**

  List information for a package.

- **release** \[*-n*\|*--relname*\] \[*-v*\|*--relvsn*\] \[*-g*\|*--goal*\] \[*-u*\|*--upfrom*\] \[*-o*\|*--output-dir*\] \[*-h*\|*--help*\] \[*-l*\|*--lib-dir*\] \[*-p*\|*--path*\] \[*--default-libs*\] \[*-V*\|*--verbose*\] \[*-d*\|*--dev-mode*\] \[*-i*\|*--include-erts*\] \[*-a*\|*--override*\] \[*-c*\|*--config*\] \[*--overlay\_vars*\] \[*--vm\_args*\] \[*--sys\_config*\] \[*--system\_libs*\] \[*--version*\] \[*-r*\|*--root*\]

  Build release of project.

-

  *--relname*: Specify the name for the release that will be generated

-

  *--relvsn*: Specify the version for the release

-

  *--goal*: Specify a target constraint on the system. These are usually the OTP

-

  *--upfrom*: Only valid with relup target, specify the release to upgrade from

-

  *--output-dir*: The output directory for the release. This is \`./\` by default.

-

  *--help*: Print usage

-

  *--lib-dir*: Additional dir that should be searched for OTP Apps

-

  *--path*: Additional dir to add to the code path

-

  *--default-libs*: Whether to use the default system added lib dirs (means you must add them all manually). Default is true

-

  *--verbose*: Verbosity level, maybe between 0 and 3

-

  *--dev-mode*: Symlink the applications and configuration into the release instead of copying

-

  *--include-erts*: If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts

-

  *--override*: Provide an app name and a directory to override in the form \<appname\>:\<app directory\>

-

  *--config*: The path to a config file

-

  *--overlay\_vars*: Path to a file of overlay variables

-

  *--vm\_args*: Path to a file to use for vm.args

-

  *--sys\_config*: Path to a file to use for sys.config

-

  *--system\_libs*: Path to dir of Erlang system libs

-

  *--version*: Print relx version

-

  *--root*: The project root directory

- **relup** \[*-n*\|*--relname*\] \[*-v*\|*--relvsn*\] \[*-g*\|*--goal*\] \[*-u*\|*--upfrom*\] \[*-o*\|*--output-dir*\] \[*-h*\|*--help*\] \[*-l*\|*--lib-dir*\] \[*-p*\|*--path*\] \[*--default-libs*\] \[*-V*\|*--verbose*\] \[*-d*\|*--dev-mode*\] \[*-i*\|*--include-erts*\] \[*-a*\|*--override*\] \[*-c*\|*--config*\] \[*--overlay\_vars*\] \[*--vm\_args*\] \[*--sys\_config*\] \[*--system\_libs*\] \[*--version*\] \[*-r*\|*--root*\]

  Create relup of releases.

-

  *--relname*: Specify the name for the release that will be generated

-

  *--relvsn*: Specify the version for the release

-

  *--goal*: Specify a target constraint on the system. These are usually the OTP

-

  *--upfrom*: Only valid with relup target, specify the release to upgrade from

-

  *--output-dir*: The output directory for the release. This is \`./\` by default.

-

  *--help*: Print usage

-

  *--lib-dir*: Additional dir that should be searched for OTP Apps

-

  *--path*: Additional dir to add to the code path

-

  *--default-libs*: Whether to use the default system added lib dirs (means you must add them all manually). Default is true

-

  *--verbose*: Verbosity level, maybe between 0 and 3

-

  *--dev-mode*: Symlink the applications and configuration into the release instead of copying

-

  *--include-erts*: If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts

-

  *--override*: Provide an app name and a directory to override in the form \<appname\>:\<app directory\>

-

  *--config*: The path to a config file

-

  *--overlay\_vars*: Path to a file of overlay variables

-

  *--vm\_args*: Path to a file to use for vm.args

-

  *--sys\_config*: Path to a file to use for sys.config

-

  *--system\_libs*: Path to dir of Erlang system libs

-

  *--version*: Print relx version

-

  *--root*: The project root directory

- **report**

  Provide a crash report to be sent to the rebar3 issues page.

- **shell** \[*--config*\] \[*--name*\] \[*--sname*\] \[*--setcookie*\] \[*--script*\] \[*--apps*\] \[*--start-clean*\] \[*--user\_drv\_args*\]

  Run shell with project apps and deps in path.

-

  *--config*: Path to the config file to use. Defaults to {shell, \[{config, File}\]} and then the relx sys.config file if not specified.

-

  *--name*: Gives a long name to the node.

-

  *--sname*: Gives a short name to the node.

-

  *--setcookie*: Sets the cookie if the node is distributed.

-

  *--script*: Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, \[{script\_file, File}\]} if not specified.

-

  *--apps*: A list of apps to boot before starting the shell. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, \[{apps, Apps}\]} or relx apps if not specified.

-

  *--start-clean*: Cancel any applications in the 'apps' list or release.

-

  *--user\_drv\_args*: Arguments passed to user\_drv start function for creating custom shells.

- **tar** \[*-n*\|*--relname*\] \[*-v*\|*--relvsn*\] \[*-g*\|*--goal*\] \[*-u*\|*--upfrom*\] \[*-o*\|*--output-dir*\] \[*-h*\|*--help*\] \[*-l*\|*--lib-dir*\] \[*-p*\|*--path*\] \[*--default-libs*\] \[*-V*\|*--verbose*\] \[*-d*\|*--dev-mode*\] \[*-i*\|*--include-erts*\] \[*-a*\|*--override*\] \[*-c*\|*--config*\] \[*--overlay\_vars*\] \[*--vm\_args*\] \[*--sys\_config*\] \[*--system\_libs*\] \[*--version*\] \[*-r*\|*--root*\]

  Tar archive of release built of project.

-

  *--relname*: Specify the name for the release that will be generated

-

  *--relvsn*: Specify the version for the release

-

  *--goal*: Specify a target constraint on the system. These are usually the OTP

-

  *--upfrom*: Only valid with relup target, specify the release to upgrade from

-

  *--output-dir*: The output directory for the release. This is \`./\` by default.

-

  *--help*: Print usage

-

  *--lib-dir*: Additional dir that should be searched for OTP Apps

-

  *--path*: Additional dir to add to the code path

-

  *--default-libs*: Whether to use the default system added lib dirs (means you must add them all manually). Default is true

-

  *--verbose*: Verbosity level, maybe between 0 and 3

-

  *--dev-mode*: Symlink the applications and configuration into the release instead of copying

-

  *--include-erts*: If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts

-

  *--override*: Provide an app name and a directory to override in the form \<appname\>:\<app directory\>

-

  *--config*: The path to a config file

-

  *--overlay\_vars*: Path to a file of overlay variables

-

  *--vm\_args*: Path to a file to use for vm.args

-

  *--sys\_config*: Path to a file to use for sys.config

-

  *--system\_libs*: Path to dir of Erlang system libs

-

  *--version*: Print relx version

-

  *--root*: The project root directory

- **tree** \[*-v*\|*--verbose*\]

  Print dependency tree.

-

  *--verbose*: Print repo and branch/tag/ref for git and hg deps

- **unlock**

  Unlock dependencies.

- **update**

  Update package index.

- **upgrade**

  Upgrade dependencies.

- **version**

  Print version for rebar and current Erlang.

- **xref**

  Run cross reference analysis.

## ENVIRONMENT

Environment variables allow overall rebar3 control across command boundaries.

- **REBAR\_PROFILE**

  Choose a default profile. Defaults to **default**

- **HEX\_CDN**

  Pick an alternative hex mirror.

- **REBAR\_CACHE\_DIR**

  Location of the directory for local cache. Defaults to *hex.pm***.**

- **QUIET**

  Only display errors.

- **DEBUG**

  Display debug information.

- **REBAR\_COLOR**=*high*\|*low*

  How much color to show in the terminal. Defaults to *high*.

- **REBAR\_CONFIG**

  Name of rebar configuration files. Defaults to *rebar.config*

- **REBAR\_GIT\_CLONE\_OPTIONS**

  Arguments to add after each *git clone* operation. For example, the value *--reference ~/.cache/repos.reference* allows to create a cache of all fetched repositories across builds

## Configuration File Options

See *http://www.rebar3.org/v3.0/docs/configuration*
