Build tools

In this chapter we are going to look at how the various build tools handle different tasks.

Some tasks provided by these tools are language-specific. Others can be used with several languages. Look for these icons:

  • This task is Erlang-specific (an Erlang-only project will be created, only Erlang files will be processed etc.)

  • This task is Elixir-specific (an Elixir-only project will be created, only Elixir files will be processed etc.)

  • TODO: LFE logo

  • TODO: Efene logo

Overview

Rebar3

Features

  • Erlang-based
  • Build and test OTP-structured projects
  • Build releases
  • Dependency-management and dependency tracking
  • Plugins
  • Package management: integrated with hex.pm
  • Command-line

Configuration

rebar.conf in the project root. Configuration is specified in Erlanf terms.

Command line help

rebar3 help

For specific tasks

rebar3 help <TASK>

erlang.mk

Features

  • Make-based
  • Build any configuration (as long as there is a Makefile)
  • Build releases
  • Dependency-management and dependency tracking
  • Plugins
  • Package management: integrated package list
  • Command-line

Configuration

Custom Makefile in project root. Regular Makefile instructions.

Command line help

make -f erlang.mk help

Or, if you have erlang.mk included in your Makefile

make help

mix

Features

  • Elixir-based
  • Build and test Elixir projects
  • Dependency-management and dependency tracking
  • Plugins
  • Package management: integrated with hex.pm

Configuration

mix.exs in project root. Tasks written in Elixir.

Command line help

mix help

Specific tasks

mix help <TASK>