Skip to content
CAI
Software that uses CAICheck a score

Philippus/sbt-dotenv

59.9

Adequate · 20 September 2026

455

lines of production code

Scala

with Java

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an sbt plugin designed to manage environment variables for Scala and Java projects by loading configurations from .env files. It provides capabilities for variable expansion, custom file naming, and scoped loading for different build configurations like Test and IntegrationTest. The plugin ensures that environment changes propagate to child processes and preserves existing CI variables while allowing local overrides.

Features

Support for configurable .env file names and variable expansion

Users can now specify a custom filename for the environment configuration file via the new \envFileName\ setting, which defaults to \.env\. The plugin also introduces support for variable expansion within \.env\ files, allowing variables to reference other variables using \$VAR\ or \${VAR}\ syntax. Additionally, the internal implementation has been migrated from Java to Scala, and the plugin now supports applying environment settings to the IntegrationTest configuration in addition to the default scope.

src/main/scala · high confidence

sbt-dotenv version 3.3.0 release with expanded configuration and documentation

This release updates the plugin to version 3.3.0 and introduces support for variable expansion (e.g., \$FOO\, \${FOO}\) within \.env\ files, allowing values to reference other variables or system environment properties. It adds configuration options to specify custom environment files for different sbt configurations, such as \Test\ and \IntegrationTest\, enabling isolated environment setups. The plugin now supports multiline variables and comments in \.env\ files, and provides guidance on handling "illegal reflective access" warnings on Java 9+ by updating \.sbtopts\ with necessary JVM exports. Documentation has been significantly expanded to cover installation, usage, Apple Silicon compatibility, and license information.

(repo-wide) · high confidence

Behavioural changes

Native environment variable updates now propagate to child processes

A new NativeEnvironmentManager implementation has been added to allow environment variables to be set directly in the underlying OS environment rather than only in the JVM view. This ensures that changes made to environment variables are visible to any child processes spawned by the application, addressing a limitation where previous methods only affected the current JVM's environment map.

src/main/java · high confidence

Test coverage

Add scripted tests for .env loading behavior and update build configuration; Added scripted tests for sbt-dotenv plugin behavior; Expanded test coverage for SBT dotenv plugin parsing and environment handling.

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 60.

Lenses

  • Code Health 100
  • Architecture 100
  • Maturity 51
  • Readiness 50
  • Security 75

Changes since last survey

  • 300 commits — 300 feature/other, 0 fixes

By area

  • (root) — 121 commits
  • (repo) — 72 commits
  • project/build.properties — 52 commits
  • project/plugins.sbt — 25 commits
  • src/sbt-test — 11 commits
  • .github/workflows — 10 commits
  • src/main — 7 commits
  • .github/FUNDING.yml — 1 commit
  • project/ci-release.sbt — 1 commit

Notable commits

  • change: #137 Add support for absolute paths
  • change: Add 'License' section
  • change: Add 'Reformat with sbt-java-formatter 0.10.0' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.10.4' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.11.0' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.7.15' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.9.10' to .git-blame-ignore-revs
  • change: Add FUNDING.yml
  • change: Add explanation for targeting sbt 1.3.9
  • change: Add note on Apple Silicon (M1 chips)
  • change: Add note on exceptions when using java >= 16
  • change: Add sbt-java-formatter
  • change: Add sbt/setup-sbt action (#225)
  • change: Add scala steward badge
  • change: Adopt scalafmt
  • change: Build and release through GitHub workflows
  • change: Change organization to nl.gn0s1s
  • change: Clear env before applying vars (#344)
  • change: Cross-build for sbt 2.0.0-M2 (#217)
  • change: Drop jna dependency
  • …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

Philippus/sbt-dotenv 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 32b435856c935a6a2982256d3bbc76b0c11948bf — 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.