sbt, the interactive build tool
Go to file
Ethan Atkins ec09e73437 Improve cache invalidation strategy
Previously the persistent attribute map was only reset when the file
event monitor detected a change. This made it possible for the cache to
be inconsistent with the state of the file system*. To fix this, I add an
observer on the file tree repository used by the continuous build that
invalidates the cache entry for any path for which it detects a change.
Invalidating the cache does not stamp the file. That only happens either
when a task asks for the stamp for that file or when the file event
monitor reports an event and we must check if the file was updated or
not.

After this change, touching a source file will not trigger a build
unless the contents of the file actually changes.

I added a test that touches one source file in a project and updates the
content of the other. If the source file that is only ever touched ever
triggers a build, then the test fails.

* This could lead to under-compilation because ExternalHooks would not
detect that the file had been updated.
2019-05-11 22:01:48 -07:00
.github Fix CONTRIBUTING and link to it 2018-09-04 23:25:42 -04:00
core-macros/src/main/scala/sbt/internal/util/appmacro Add support for managed task inputs 2019-05-02 14:33:29 -07:00
internal Add support for managed task inputs 2019-05-02 14:33:29 -07:00
launch Adds sbt.boot.lock sysprop to opt-out 2018-02-08 13:02:39 +00:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
main Improve cache invalidation strategy 2019-05-11 22:01:48 -07:00
main-actions/src Bump io 2019-05-02 14:33:01 -07:00
main-command/src Bump io 2019-05-02 14:33:01 -07:00
main-settings/src Allow calling TaskKey.previous in input tasks 2019-04-25 15:58:01 -07:00
notes Implement sequential[B](tasks: Seq[Initialize[Task[B]]]) and remove useless comment outs 2018-09-19 20:54:18 -04:00
project Update io 2019-05-11 21:34:02 -07:00
protocol/src/main apply formatting 2019-04-20 03:23:54 -04:00
run Properly close a number of classloaders 2019-05-02 14:38:33 -07:00
sbt/src Improve cache invalidation strategy 2019-05-11 22:01:48 -07:00
scripted-plugin/src/main/scala/sbt -Xfatal-warnings in most subprojects 2018-09-18 11:47:55 -04:00
scripted-sbt-old/src/main/scala/sbt/test Update header 2018-09-14 04:53:36 -04:00
scripted-sbt-redux Add package/mappings to launcher base scripted tests 2019-05-02 14:36:08 -07:00
src/main/conscript 1.2.0 2018-07-30 00:56:36 -04:00
tasks apply formatting 2019-04-20 03:23:54 -04:00
tasks-standard apply formatting 2019-04-20 03:23:54 -04:00
testing apply formatting 2019-04-20 03:23:54 -04:00
vscode-sbt-scala Bump node modules for security fixes 2019-02-22 10:51:54 -05:00
zinc-lm-integration/src Close URLClassLoaders after getting bridge 2019-04-30 12:24:47 -07:00
.appveyor.yml Disable supershell in CI 2019-03-30 11:51:47 -07:00
.gitattributes remove gittatributes, assume core.autocrlf=false 2018-06-26 17:38:05 +03:00
.gitignore adding a fatjar release (aka sbt-big) to the build 2018-11-07 08:37:49 +00:00
.java-version Configure JVM 1.8 in .java-version 2016-10-07 08:48:23 -05:00
.sbtopts Use .sbtopts to increase the RAM 2018-06-25 19:40:15 -04:00
.scalafmt.conf workaround Scalafmt regex 2019-04-20 14:18:10 -04:00
.travis.yml always reresolve sbt artifacts when using Coursier 2019-04-27 14:31:13 -04:00
CONTRIBUTING.md fix branch name in CONTRIBUTING 2018-09-10 16:18:40 +02:00
LICENSE Apache License 2.0 2018-09-14 03:38:58 -04:00
NOTICE Apache License 2.0 2018-09-14 03:38:58 -04:00
PROFILING.md fix typo 2018-07-08 22:18:57 +09:00
README.md Add Travis build status badge and latest version badge #4621 2019-04-19 06:36:46 -07:00
SUPPORT.md Split support into SUPPORT.md 2018-04-25 14:55:09 +01:00
build.sbt reduce the example size to 1000 2019-05-11 04:52:42 -04:00
reset.sh 1.0.3-SNAPSHOT 2017-09-16 15:52:58 -04:00
sbt-allsources.sh Bump underlying modules to latest 2017-03-23 12:41:24 -04:00
server.md setting query is "sbt/setting" 2017-10-03 01:45:06 -04:00

README.md

Build Status Latest version Gitter Chat

sbt

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

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

sbt 1.x

This is the 1.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/util hosts a collection of internally used modules.
  • sbt/librarymanagement hosts sbt.librarymanagement module that wraps Ivy.
  • sbt/zinc hosts Zinc, an incremental compiler for Scala.
  • sbt/sbt, this repository hosts modules that implements 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.

The short version: try searching or asking on StackOverflow.

license

See LICENSE.