Gradle Critical Path & Task IO: Now Including Composite Build Tasks

The Gradle Critical Path analyzer and Task Inputs/Outputs visibility features now capture the full picture of your build, including tasks from included builds like buildSrc and other composite build modules.

Highlights

What Changed: Previously, our Gradle analytics only captured tasks from the root build. If your project uses included builds (such as buildSrc or other composite modules), those tasks were invisible in both the Critical Path view and Task IO details. Now, tasks like :buildSrc:compileKotlin appear alongside root build tasks, giving you a unified view of your entire build.

Why This Matters: For projects with buildSrc or composite builds, included build tasks often sit on the critical path—a slow buildSrc compilation can block every other task in your build. Without visibility into these tasks, you were missing a key piece of the optimization puzzle. Now you can see exactly how included builds affect your overall build time and cache performance.

Configuration Phase Visibility: We also now capture the configuration phase of included builds, which can be a significant and often overlooked cost. In large projects, configuring buildSrc or other included modules can take minutes on its own. This time now appears in your analytics, so you can identify whether the configuration phase of an included build is a hidden bottleneck in your overall build time.

How It Works: The Bitrise Gradle plugin now detects when it’s running inside an included build and captures analytics events, task graphs, and task input/output data in memory. When the root build runs, this captured data is replayed and merged—included build tasks appear with their full paths (e.g., :buildSrc:compileKotlin) and their dependency relationships to root build tasks are preserved. This means the Critical Path correctly spans build boundaries, and Task IO lets you inspect inputs and outputs of included build tasks just like any other task.

Configuration Cache Compatible: The entire mechanism is designed to work with Gradle’s configuration cache. Data is shared across classloaders via JVM-level storage rather than file I/O, so enabling this feature won’t invalidate your configuration cache.

Failed Included Builds Covered Too: If an included build fails (e.g., a compilation error in buildSrc), the analytics data captured up to the point of failure is still sent. This means you get visibility into what happened even when the root build never starts—useful for debugging build failures in your build logic itself.

No Action Required: This improvement is automatically available when you update to the latest version of the Bitrise Gradle plugin. No configuration changes are needed.

Bottom line: The Critical Path and Task IO features now see your entire build—including buildSrc and composite modules, their tasks, and their configuration phase—so you can identify bottlenecks and cache misses wherever they occur, not just in the root build.