Introduction
- 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
Troubleshooting
Summary and Next Steps