Bazel Training Course


  • Overview of Bazel
  • Understanding the Bazel architecture

Getting Started

  • Installing the Bazel runtime and launcher
  • Understanding the Bazel UI

Understanding the Project Structure and Basic Building Blocks

  • Project building block
  • Project structure
  • Concepts of a build logic

Invoking a Target From the Command Line

  • Executing a target
  • Commonly-used commands
  • Output and cache directories

Understanding the Bazel Build Lifecycle

  • Phases of the Bazel lifecycle
  • Configuration file
  • Programming language rules

Using Bazel Basic Automation For Java

  • Setting up a Java project
  • Building a Java project
  • Running the build from the command line
  • Inspecting the generated artifact
  • Deploying the Java project
  • Driving Bazel from the IDE
  • Using Bazel in IntelliJ

Bazel Dependency Management

  • Modeling fine-grained package granularity and dependencies
  • Declaring external dependencies
  • Declaring an external library and using it in a code
  • Declaring the JUnit dependency
  • Publishing a JAR to a Maven repository
  • Publishing a Java library to local Maven

Testing Automation

  • Performing automated tests
  • Executing JUnit tests

Advanced Bazel

  • Extension concepts
  • Writing and executing a genrule
  • Remote caching and execution
  • Build stamping
  • Bazel query
  • Java toolchains


Summary and Next Steps