sbt, the interactive build tool
Go to file
Ethan Atkins 4061dabf4d Override zinc compile analysis for source changes
Zinc records all of the compile source file hashes when compilation
completes. This is problematic because its possible that a source file
was changed during compilation. From the user perspective, this may mean
that their source change will not be recompiled even if a build is
triggered by the change.

To overcome this, I add logic in the sbt provided external hooks to
override the zinc analysis stamps. This is done by writing the source
file stamps to the previous cache after compilation completes. This
allows us to see the source differences from sbt's perspective, rather
than zinc's perspective. We then merge the combined differences in the
actual implementation of ExternalHooks. In some cases this may result in
over-compilation but generally over-compilation is preferred to under
compilation. Most of the time, the results should be the same.

The scripted test that I added modifies a file during compilation by
invoking a macro. It then effectively asserts that the file is
recompiled during the next test run by validating the compilation result
in the test. The test fails on the latest develop hash.
2019-07-29 20:13:41 -07:00
.github/ISSUE_TEMPLATE Auto-label bug reports & delete old issue template 2019-06-04 08:01:18 +01: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 Bump scalafmt 2019-07-18 12:40:21 -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 Override zinc compile analysis for source changes 2019-07-29 20:13:41 -07:00
main-actions/src Fix java.util.zip.ZipException: duplicate entry 2019-07-23 01:28:32 -04:00
main-command/src Merge pull request #4906 from eatkins/turbo-resource-loader 2019-07-29 16:21:17 -04:00
main-settings/src Bump scalafmt 2019-07-18 12:40:21 -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 use sbt 1.3.0-RC3 2019-07-17 14:53:39 -04:00
protocol/src/main apply formatting 2019-04-20 03:23:54 -04:00
run quote run argument if it contains a whitespace 2019-06-24 19:32:55 -04:00
sbt/src Override zinc compile analysis for source changes 2019-07-29 20:13:41 -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 Relax strict commands 2019-07-16 15:17:21 -07:00
src/main/conscript 1.2.0 2018-07-30 00:56:36 -04:00
tasks Don't automatically die on OOM: metaspace 2019-05-28 09:53:36 -07:00
tasks-standard Add support for in memory cache store 2019-07-11 17:45:16 -07:00
testing Bump scalafmt 2019-07-18 12:40:21 -07:00
vscode-sbt-scala fix typo 2019-06-06 08:05:16 +03:00
zinc-lm-integration/src Add new ClassLoaderCache implementation 2019-05-28 09:53:35 -07:00
.appveyor.yml Run more scripted tests on windows 2019-05-11 22:01:49 -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
.mailmap Add mailmap 2019-06-11 09:30:14 +02:00
.sbtopts Use .sbtopts to increase the RAM 2018-06-25 19:40:15 -04:00
.scalafmt.conf Bump scalafmt 2019-07-18 12:40:21 -07:00
.travis.yml Add nio tests to .travis.yml 2019-07-16 20:48:07 -07:00
CONTRIBUTING.md Split some of the developing related docs to DEVELOPING.md 2019-07-15 12:39:41 -04:00
DEVELOPING.md Minor clarification of logging message 2019-07-19 06:01:15 -05: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 fix typo 2019-06-06 08:05:16 +03:00
SUPPORT.md Split support into SUPPORT.md 2018-04-25 14:55:09 +01:00
build.sbt Fix typo 2019-07-29 12:45:22 -07: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.