sbt, the interactive build tool
Go to file
Douglas Ma a7d5f45515
[2.x] fix: Reject java.io.File as cached task output type (#8766)
Change the behavior when a cached task's output type contains
java.io.File: instead of silently skipping the cache, throw a
compile-time error with a message recommending xsbti.VirtualFileRef,
xsbti.HashedVirtualFileRef, or xsbti.VirtualFile, and linking to the
caching documentation.

Internal sbt tasks that return File types are wrapped with
Def.uncached to opt out of caching.

Fixes https://github.com/sbt/sbt/issues/8762

Generated-by: GitHub Copilot (Claude)

* [2.x] fix: Reject java.io.File as cached task output type

Use @transient on File-returning keys in Keys.scala instead of
wrapping tasks with Def.uncached in Defaults.scala. This ensures
build users who rewire these tasks also get caching skipped
automatically.

- Add @transient to 19 File-returning taskKey definitions in Keys.scala
- Revert Def.uncached wrappers from Defaults.scala
- Error at compile time when File is used as cached task output type
- Update error message to recommend @transient and link to docs
- Update scripted tests to use @transient approach

Fixes #8762

Generated-by: GitHub Copilot (Claude Opus 4.6)
2026-02-21 01:35:46 -05:00
.github [2.x] feat: repositories_force support (#8761) 2026-02-20 01:52:59 -05:00
buildfile/src [2.x] fix: Fix subproject evaluation order (#8672) 2026-02-01 02:33:11 -05:00
client Revert "[2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464)" (#8557) 2026-01-16 00:06:28 -05:00
contributing-docs [2.x] Bump to 2.0.0-RC9-bin-SNAPSHOT (#8666) 2026-01-31 18:23:07 -05:00
core-macros/src [2.x] fix: Reject java.io.File as cached task output type (#8766) 2026-02-21 01:35:46 -05:00
internal [2.x] Use JProcess for interactive forking (#8677) 2026-02-02 11:03:28 -05:00
launch [2.x] feat: repositories_force support (#8761) 2026-02-20 01:52:59 -05:00
launcher-package [2.x] feat: XDG directory standard (#8769) 2026-02-20 23:32:48 -05:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
lm-core [2.x] fix: Fixes evicted warning for version intervals (#8719) 2026-02-09 02:27:28 -05:00
lm-coursier implemente using PrettyPrinter instead of CompactPrinter (#8773) 2026-02-20 22:39:41 -05:00
lm-ivy/src [2.x] fix: Fixes evicted warning for version intervals (#8719) 2026-02-09 02:27:28 -05:00
main [2.x] fix: Reject java.io.File as cached task output type (#8766) 2026-02-21 01:35:46 -05:00
main-actions/src [2.x] fix: Fixes explicitlySpecified and selectors for testOnly (#8727) 2026-02-13 09:19:05 -08:00
main-command/src [2.x] feat: client-side run env inheritance (#8752) 2026-02-17 14:07:54 -05:00
main-settings/src [2.x] fix: Use correct configuration identifier for display (#8698) 2026-02-06 12:54:58 -05:00
notes Spelling (#8028) 2025-02-04 01:11:28 -05:00
project Update sbt plugins 2026-02-21 09:27:34 +09:00
protocol/src [2.x] Minimalist console (#8722) 2026-02-09 10:55:44 -05:00
run [2.x] Use JProcess for interactive forking (#8677) 2026-02-02 11:03:28 -05:00
sbt-app/src [2.x] fix: Reject java.io.File as cached task output type (#8766) 2026-02-21 01:35:46 -05:00
sbt-remote-cache/src/main/scala/sbt remove unnecessary `case` 2025-02-22 08:48:29 +09:00
sbtw [2.x] feat: sbtw launcher (#8742) 2026-02-16 16:21:30 -05:00
scripted-sbt [2.x] feat: repositories_force support (#8761) 2026-02-20 01:52:59 -05:00
scripts Fix lm-coursier scripted 2024-10-11 14:30:55 +02:00
server-test/src [2.x] fix: handle --version in sbt 2.x project dirs (sbt#8717) (#8735) 2026-02-13 09:10:51 -08:00
src [2.x] Add scripted test for #7838 (#8541) 2026-01-20 12:13:27 -05:00
tasks [2.x] fix: Handle CancellationException gracefully with usePipelining (#8718) 2026-02-09 02:28:54 -05:00
tasks-standard Use SAM-conversion if possible (#8477) 2026-01-11 07:21:28 -05:00
testing [2.x] fix: Fixes testing EventHandler race condition 2026-02-09 10:55:06 -05:00
util-cache Fix ActionCache: treat invalid/empty JSON as cache miss 2026-02-15 07:50:38 +01:00
util-collection Fix scaladoc (#8476) 2026-01-11 07:20:40 -05:00
util-tracking [2.x] test: Migrate TrackedSpec.scala to verify.BasicTestSuite (#8547) 2026-01-15 22:51:29 -05:00
worker/src [2.x] Minimalist console (#8722) 2026-02-09 10:55:44 -05:00
zinc-lm-integration/src [2.x and 1.x] Respect `scalaOrganization` in compiler bridge resolution (#8732) 2026-02-21 01:11:10 -05:00
.git-blame-ignore-revs Add .git-blame-ignore-revs 2024-10-09 13:38:02 +02:00
.gitattributes Fix line endings in msi 2021-11-19 20:41:39 -05:00
.gitignore [2.x] fix : BSP compile returns StatusCode.Error on failure (#8104) (#8709) 2026-02-07 11:01:49 -05:00
.gitmodules Move metadata to lm-coursier/metadata 2024-10-09 09:44:42 +02:00
.java-version Scala 3.8.0 2026-01-24 04:52:28 -05:00
.jvmopts Add .jvmopts 2023-11-25 01:06:30 -05:00
.mailmap Add mailmap 2019-06-11 09:30:14 +02:00
.sbtopts Restore .sbtopts file 2020-11-19 12:42:26 -08:00
.scala-steward.conf Pin slf4j-api 2023-01-02 22:06:46 -05:00
.scalafmt.conf update scalafmt config. re-format build files 2025-09-23 10:28:38 +09:00
AGENTS.md [2.x] docs: Move to CONTRIBUTING (#8629) 2026-01-25 15:48:09 -05:00
CONTRIBUTING.md Update contributing to clarify AI usages (#8657) 2026-01-29 11:56:45 -05:00
LICENSE add LICENSE file 2023-06-25 09:53:06 +09:00
NOTICE Transfer copyright to Scala Center 2023-06-20 16:39:07 +02:00
PROFILING.md docs: Update flamegraph guide --lines 2025-11-09 18:06:13 -05:00
README.md [2.x] docs: Move to CONTRIBUTING (#8629) 2026-01-25 15:48:09 -05:00
SUPPORT.md Transfer copyright to Scala Center 2023-06-20 16:39:07 +02:00
build.sbt [2.x and 1.x] Respect `scalaOrganization` in compiler bridge resolution (#8732) 2026-02-21 01:11:10 -05:00
reset.sh 1.0.3-SNAPSHOT 2017-09-16 15:52:58 -04:00
sbt [2.x] feat: XDG directory standard (#8769) 2026-02-20 23:32:48 -05:00
sbt-allsources.sh Merge remote-tracking branch 'lm/wip/sbt-2.x' into 2.x-lm-coursier 2024-10-09 08:50:03 +02:00
sbt.sh Implement sbt-launch.jar download 2021-04-19 23:43:15 -04:00
server.md setting query is "sbt/setting" 2017-10-03 01:45:06 -04:00

README.md

CI Latest version Discord

sbt

sbt is a build tool for Scala, Java, and more.

For general documentation, see https://www.scala-sbt.org/.

sbt 2.x

This is the 2.x series of sbt. The source code of sbt is split across several GitHub repositories, including this one.

  • sbt/io hosts sbt.io module.
  • sbt/zinc hosts Zinc, an incremental compiler for Scala.
  • sbt/sbt, this repository hosts modules that implement the build tool.
  • Setup: Describes getting started with the latest binary release.
  • FAQ: Explains how to get help and more.
  • sbt/sbt-zero-seven: hosts sbt 0.7.7 and earlier versions

Issues and Pull Requests

Please read CONTRIBUTING carefully before opening a GitHub Issue or a pull request.

If you're looking for an idea for a contribution, issues labeled with good first issue or help wanted might be good starting points.

If you would like to ask questions about sbt, there's sbt channel on Scala Discord, but it would be good to gather questions on Stackoverflow.

license

See LICENSE.