This guide explains how to declare library dependencies, understand dependency operators, configure resolvers, and manage dependency conflicts in sbt.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/sbt/sbt/llms.txt
Use this file to discover all available pages before exploring further.
Declaring Dependencies
Dependencies are declared using thelibraryDependencies setting:
build.sbt
The
+= operator adds a single dependency, while ++= adds multiple dependencies.Dependency Operators
sbt provides several operators for declaring dependencies:The %% Operator (Scala Binary Version)
The%% operator automatically appends the Scala binary version:
build.sbt
The % Operator (No Version Suffix)
The% operator uses the exact artifact name without appending Scala version:
build.sbt
Use
% for Java libraries or when you need exact artifact control.Multiple Dependencies
Declare multiple dependencies using++=:
Configuration Scoping
Dependencies can be scoped to specific configurations:build.sbt
Common Configurations
| Configuration | Description | Classpath |
|---|---|---|
Compile | Default, production code | Compile + Runtime |
Test | Test code only | Test classpath only |
Runtime | Runtime dependencies | Runtime classpath |
Provided | Provided by runtime environment | Compile only |
Optional | Optional dependencies | Optional |
Classifiers
Classifiers allow you to request specific variants of artifacts:build.sbt
Common classifiers include
sources, javadoc, and tests.Dependency Exclusions
Exclude transitive dependencies:Dependency Overrides
Force specific versions of transitive dependencies:build.sbt
Resolvers
Resolvers specify where sbt looks for dependencies:build.sbt
Common Resolver Types
Coursier
sbt uses Coursier as the default dependency resolver. Configure Coursier settings:build.sbt
Conflict Resolution
Handle version conflicts:Version Schemes
Declare how your project versions are structured:build.sbt
Intransitive Dependencies
Declare a dependency without its transitive dependencies:build.sbt
Module Configurations
Configure resolvers per module:build.sbt
Checking Dependencies
Useful sbt commands for dependency management:Credentials for Private Repositories
Configure credentials for private repositories:Dependency Lock Files
Generate and use dependency lock files for reproducible builds:Best Practices
Use %% for Scala libraries
Always use
%% for libraries compiled against Scala versions to ensure binary compatibility.Scope test dependencies
Mark test-only dependencies with
% Test to keep them out of production classpaths.Monitor evictions
Regularly run
sbt evicted to understand version conflicts in your dependency tree.Pin critical versions
Use
dependencyOverrides for critical dependencies where version mismatches could cause issues.