Skip to content
CAI
Software that uses CAICheck a score

bazeltools/bazel-deps

49.0

Weak · 20 September 2026

5.5k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a command-line tool that generates Bazel build rules from dependency declarations in formats like Maven, Gradle, and Coursier. It resolves external libraries and produces corresponding Bazel targets, POM files, and dependency graphs. The project has been rewritten in Scala with a modular architecture and supports distribution as a GraalVM native image.

Features

Add Bazel build rules for Scala

The tools directory now includes Bazel build configuration for Scala projects. A new BUILD.bazel file and a prelude\_bazel file have been added to the tools/build\_rules directory. The prelude\_bazel file loads the necessary Scala rules (scala\_library, scala\_binary, scala\_test, scala\_repl) from the io\_bazel\_rules\_scala repository, enabling the project to be built using Bazel with Scala support.

tools · high confidence

Initial Bazel build system and CI integration

The project now supports building and testing via Bazel, replacing the previous Maven-based workflow. A .bazelversion file pins the Bazel version to 6.3.2, and the WORKSPACE.bazel configures io\_bazel\_rules\_scala v6.2.0 along with other necessary dependencies. A new dependencies.yaml file defines the project's JVM and Scala dependencies (including Jackson, Circe, Cats, and ScalaTest) using the Coursier resolver. CI is configured for Travis and GitHub Actions via .travis.yml and .bazelrc.github, which set up the environment and run Bazel tests. A bazel wrapper script is included to manage the Bazelisk launcher.

(repo-wide) · high confidence

Native image build and release pipeline scripts

Added CI scripts to build, package, and distribute the bazel-deps tool as a GraalVM native image. The new \make\_native\_artifact.sh\ script compiles the JAR into a standalone native binary using specific reflection and resource configurations (\reflection.json\, \resource-config.json\), while \build\_deploy\_jar.sh\ handles the initial JAR compilation. \make\_update\_dependencies.sh\ generates a self-contained shell script that allows users to download and run the correct platform-specific binary (Linux or macOS) with SHA-256 verification, and \prepare\_output.sh\ assists in packaging the final artifacts for release.

_ci\scripts · high confidence

Removals

Removal of legacy Bazel dependency generation tool

The \BazelDeps\ and \Maven\ utility classes in the \braintree\ package have been removed. These classes previously provided a command-line tool to fetch Maven artifacts and generate corresponding \maven\_jar\ and \java\_library\ Bazel build rules. Their deletion indicates that this specific method for generating Bazel configurations from Maven artifacts is no longer supported or maintained.

src/main · high confidence

Behavioural changes

Introduce new Scala-based dependency resolution architecture

The tool's core logic has been rewritten in Scala, replacing the previous Java implementation. This change introduces a modular architecture with distinct resolver backends (Aether, Coursier, and Gradle) and a new filesystem abstraction layer (FS) built on Cats Effect. Users benefit from improved YAML parsing via Circe, better handling of Maven server authentication, and the ability to generate POM files alongside Bazel targets.

_src/scala/com/github/johnynek/bazel\deps · high confidence

Test coverage

Added Scala test suite for bazel-deps core components

Added a comprehensive set of Scala tests for the bazel-deps project, including unit and property-based tests for the dependency graph, normalizer, model parsing, Coursier resolution, POM generation, and Gradle resolver. The test infrastructure uses ScalaTest and ScalaCheck, with helper generators for creating test data.

test/scala · high confidence

Dependencies

Update project dependencies and migrate to Bazel

The project has updated its dependency versions, including Jackson (2.12.7), Circe (0.14.5), and Apache HttpClient (4.5.13), while also migrating the build system from Maven to Bazel. This involves removing the pom.xml file and adopting a new Bazel-based build configuration, which may affect how the project is built and managed.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 49.

Lenses

  • Code Health 91
  • Architecture 100
  • Maturity 31
  • Readiness 56
  • Security 57

Changes since last survey

  • 300 commits — 252 feature/other, 48 fixes

By area

  • src/scala — 121 commits
  • (root) — 54 commits
  • (repo) — 47 commits
  • .github/workflows — 26 commits
  • 3rdparty/jvm — 25 commits
  • test/scala — 10 commits
  • ci_scripts/make_native_artifact.sh — 5 commits
  • 3rdparty/workspace.bzl — 4 commits
  • ci_scripts/build_fat_jar.sh — 3 commits
  • ci_scripts/make_update_dependencies.sh — 2 commits
  • 3rdparty/BUILD — 1 commit
  • 3rdparty/manual — 1 commit
  • ci_scripts/prepare_output.sh — 1 commit

Notable commits

  • fix: Another attempt to fix bad cases here
  • fix: Bump graalvm for native image release fix (#351)
  • fix: Do not overwrite BUILD file if it existed; fixes #198
  • fix: Extra conditional to fix bug intro'd by https://github.com/johnynek/bazel-deps/pull/251 (#267)
  • fix: Fix #108: provide access to list of dependency hashes in workspace.bzl
  • fix: Fix 'else' branch of conditional in update_dependencies.sh (#288)
  • fix: Fix Deploy, take 2 (#343)
  • fix: Fix SHA1 check
  • fix: Fix The value 'PACKAGE_NAME' has been removed in favor of 'package_name()' (#230)
  • fix: Fix a bug in refactoring GradleResolver (#324)
  • fix: Fix a bug in the normalizer where roots with no dependencies were dropped
  • fix: Fix a bug with yaml minimization (#70)
  • fix: Fix an issue with subproject merging (#36)
  • fix: Fix for infinite loop in Normalizer.java in transitive deps
  • fix: Fix graal version in ci_scripts (#353)
  • fix: Fix regex quoting issue that prevents it working with Windows-style paths that contain a backslash.
  • fix: Fix release (#342)
  • fix: Fix release process, take 2 (#369)
  • fix: Fix release.yml (#368)
  • fix: Fix root version checking
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

bazeltools/bazel-deps was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 4b583c6bed5f027579f1e9f891f75fe2d7d06aa3 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.