Installing Bazel

See the instructions for installing Bazel on:

For other platforms, you can try to compile from source.

Required Java version:

Java JDK 8 or later is required. To address the problem of JDK 8 not being available on some machines, Bazel's binary installer embeds a JDK by default.

Note: Homebrew and Debian packages do not contain the embedded JDK. The shell installers are the only ones with an embedded JDK.


For more information on using Bazel, see Getting Started with Bazel.

Using Bazel with JDK 7

Bazel version 0.5.0 does run with JDK 7. However, starting with version 0.5.1 Bazel must use JDK 8.

The installers available for 0.5.0 are:

  • default version with embedded JDK
  • version without embedded JDK
  • version compatible with JDK 7, will not be available in later releases

Getting bash completion

Bazel comes with a bash completion script, which the installer copies into the bin directory. If you ran the installer with --user, this will be $HOME/.bazel/bin. If you ran the installer as root, this will be /usr/local/bazel/bin.

Copy the bazel-complete.bash script to your completion folder (/etc/bash_completion.d directory under Ubuntu). If you don't have a completion folder, you can copy it wherever suits you and insert source /path/to/bazel-complete.bash in your ~/.bashrc file (under OS X, put it in your ~/.bash_profile file).

If you built Bazel from source, the bash completion target is in the //scripts package:

  1. Build it with Bazel: bazel build //scripts:bazel-complete.bash.
  2. Copy the script bazel-bin/scripts/bazel-complete.bash to one of the locations described above.

Getting zsh completion

Bazel also comes with a zsh completion script. To install it:

  1. Add this script to a directory on your $fpath:

    mkdir -p ~/.zsh/completion/
    cp scripts/zsh_completion/_bazel ~/.zsh/completion

    You may have to call rm -f ~/.zcompdump; compinit the first time to make it work.

  2. Optionally, add the following to your .zshrc.

    # This way the completion script does not have to parse Bazel's options
    # repeatedly.  The directory in cache-path must be created manually.
    zstyle ':completion:*' use-cache on
    zstyle ':completion:*' cache-path ~/.zsh/cache