6.7 KiB
Fixes with compatibility implications
- Starting 0.13.9,
crossScalaVersionsdefault value is fixed back to the older 0.12.x behavior. See below for details. - Starting 0.13.9, the generated POM files no longer include dependencies on source or javadoc jars obtained via
withSources()orwithJavadoc(). See below for details. - Scala version is bumped to 2.10.5. This brings in the fix for SI-9027: XML node sequence literal bug. #1666/#2068 by @eed3si9n
Improvements
- Adds
retrieveManagedrelated improvements. See below for details. - Adds
-=and--=for settings and tasks, which are the opposites of+=and++=. #1922 by @dwijnand - Adds
inThisBuild, similar toinConfig, to allow specifying multiple settings inThisBuildscope. #1847/#1989 by @dwijnand - Adds a nicer toString to SimpleCommand to make it more human-friendly. #1998/#2000 by @dwijnand
- Adds
forceUpdatePeriodkey, that takes values ofOption[FiniteDuration]. If set, a fullupdatewill occur after that amount of time without needing to explicitly run theupdatetask. By @ajsquared - Updates
ForkError.getMessage()to include exception's original name. #2028 by @kamilkloch - Adds help message for
inspect actual. #1651/#1990 by @dwijnand - Supports excluding tests in
testOnly/testQuickwith-, for example-MySpec. #1970 by @matthewfarwell
Bug fixes
- Fixes memory/performance issue with cached resolution. See below.
- Correct incremental compile debug message for invalidated products #1961 by @jroper
- Enables forced GC by default. See below.
- Captures errors on
helpcommand. #1900/#1940 by @DavidPerezIngeniero - Prevents history command(s) from going into an infinite loop #1562 by @PanAeon
- Honors overwrite flag when publishing locally. #1960 by @asflierl
- Fixes a certain class of pom corruption that can occur in the presence of parent-poms. #1856 by @jsuereth
- Adds dependency-level exclusions in the POM for project-level exclusions. #1877/#2035 by @dwijnand
crossScalaVersions default value
As of this fix crossScalaVersions returns to the behaviour present in 0.12.4 whereby it defaults to what
scalaVersion is set to, for example if scalaVersion is set to "2.11.6", crossScalaVersions now defaults
to Seq("2.11.6").
Therefore when upgrading from any version between 0.13.0 and 0.13.8 be aware of this new default if
your build setup depended on it.
POM files no longer include certain source and javadoc jars
When declaring library dependencies using the withSources() or withJavadoc() options, sbt was also including in the pom file, as dependencies, the source or javadoc jars using the default Maven scope. Such dependencies might be erroneously processed as they were regular jars by automated tools
retrieveManaged related improvements
sbt 0.13.9 adds retrieveManagedSync key that, when set to true, enables synchronizing retrieved to the current build by removed unneeded files.
It also adds configurationsToRetrieve key, that takes values of Option[Set[Configuration]]. If set, when retrieveManaged is true only artifacts in the specified configurations will be retrieved to the current build.
#1950/#1987 by @ajsquared
Cached resolution fixes
On a larger dependency graph, the JSON file growing to be 100MB+ with 97% of taken up by caller information. The caller information is not useful once the graph is successfully resolved. To make the matter worse, these large JSON files were never cleaned up.
sbt 0.13.9 creates a single caller to represent all callers,
which fixes OutOfMemoryException seen on some builds.
This generally shrinks the size of JSON, so it should make the IO operations faster.
Dynamic graphs will be rotated with directories named after yyyy-mm-dd,
and stale JSON files will be cleaned up after few days.
#2030/#1721/#2014 by @eed3si9n
Force GC
@cunei in #1223 discovered that sbt leaks PermGen
when it creates classloaders to call Scala Compilers.
sbt 0.13.9 will call GC on a set interval (default: 60s).
It will also call GC right before cross building.
This behavior can diabled using by setting false to forcegc
setting or sbt.task.forcegc flag.