
  [@cunei]: https://github.com/cunei
  [@eed3si9n]: https://github.com/eed3si9n
  [@gkossakowski]: https://github.com/gkossakowski
  [@jsuereth]: https://github.com/jsuereth
  [@dwijnand]: https://github.com/dwijnand
  [@ajsquared]: https://github.com/ajsquared
  [@jroper]: https://github.com/jroper
  [@kamilkloch]: https://github.com/kamilkloch
  [@DavidPerezIngeniero]: https://github.com/DavidPerezIngeniero
  [@PanAeon]: https://github.com/PanAeon
  [@asflierl]: https://github.com/asflierl
  [@matthewfarwell]: https://github.com/matthewfarwell
  [SI9027]: https://issues.scala-lang.org/browse/SI-9027
  [1950]: https://github.com/sbt/sbt/pull/1950
  [1987]: https://github.com/sbt/sbt/pull/1987
  [1970]: https://github.com/sbt/sbt/pull/1970
  [1960]: https://github.com/sbt/sbt/pull/1960
  [1562]: https://github.com/sbt/sbt/issues/1562
  [1900]: https://github.com/sbt/sbt/issues/1900
  [1940]: https://github.com/sbt/sbt/pull/1940
  [1922]: https://github.com/sbt/sbt/pull/1922
  [1721]: https://github.com/sbt/sbt/issues/1721
  [2014]: https://github.com/sbt/sbt/issues/2014
  [2030]: https://github.com/sbt/sbt/pull/2030
  [1998]: https://github.com/sbt/sbt/issues/1998
  [2000]: https://github.com/sbt/sbt/pull/2000
  [1828]: https://github.com/sbt/sbt/issues/1828
  [1992]: https://github.com/sbt/sbt/pull/1992
  [1961]: https://github.com/sbt/sbt/issues/1961
  [1223]: https://github.com/sbt/sbt/issues/1223
  [1773]: https://github.com/sbt/sbt/pull/1773
  [2028]: https://github.com/sbt/sbt/issues/2028
  [1651]: https://github.com/sbt/sbt/issues/1651
  [1990]: https://github.com/sbt/sbt/pull/1990
  [1847]: https://github.com/sbt/sbt/issues/1847
  [1989]: https://github.com/sbt/sbt/pull/1989
  [1856]: https://github.com/sbt/sbt/issues/1856
  [1877]: https://github.com/sbt/sbt/issues/1877
  [2035]: https://github.com/sbt/sbt/pull/2035
  [2001]: https://github.com/sbt/sbt/issues/2001
  [2027]: https://github.com/sbt/sbt/pull/2027
  [1666]: https://github.com/sbt/sbt/issues/1666
  [2068]: https://github.com/sbt/sbt/pull/2068
  [2005]: https://github.com/sbt/sbt/issues/2005
  [2075]: https://github.com/sbt/sbt/pull/2075
  [1973]: https://github.com/sbt/sbt/issues/1973
  [2006]: https://github.com/sbt/sbt/pull/2006
  [2008]: https://github.com/sbt/sbt/issues/2008
  [2009]: https://github.com/sbt/sbt/pull/2009
  [2046]: https://github.com/sbt/sbt/issues/2046
  [2097]: https://github.com/sbt/sbt/pull/2097
  [2129]: https://github.com/sbt/sbt/pull/2129
  [1938]: https://github.com/sbt/sbt/pull/1938

### Fixes with compatibility implications

- Starting 0.13.9, `crossScalaVersions` default 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()` or `withJavadoc()`. See below for details.
- Scala version is bumped to 2.10.5. This brings in the fix for [SI-9027][SI9027]: XML node sequence literal bug. [#1666][1666]/[#2068][2068] by [@eed3si9n][@eed3si9n]
- Change launcher configuration so [JCenter](https://bintray.com/bintray/jcenter) is looked at first before all other external repositories. [#1938][1938]

### Improvements

- Adds `retrieveManaged` related improvements. See below for details.
- Adds `-=` and `--=` for settings and tasks, which are the opposites of `+=` and `++=`. [#1922][1922] by [@dwijnand][@dwijnand]
- Adds `inThisBuild`, similar to `inConfig`, to allow specifying multiple settings in `ThisBuild` scope. [#1847][1847]/[#1989][1989] by [@dwijnand][@dwijnand]
- Adds a nicer toString to SimpleCommand to make it more human-friendly. [#1998][1998]/[#2000][2000] by [@dwijnand][@dwijnand]
- Adds `forceUpdatePeriod` key, that takes values of `Option[FiniteDuration]`.  If set, a full `update` will occur after that amount of time without needing to explicitly run the `update` task. By [@ajsquared][@ajsquared]
- Updates `ForkError.getMessage()` to include exception's original name. [#2028][2028] by [@kamilkloch][@kamilkloch]
- Adds help message for `inspect actual`. [#1651][1651]/[#1990][1990] by [@dwijnand][@dwijnand]
- Supports excluding tests in `testOnly`/`testQuick` with `-`, for example `-MySpec`.
  [#1970][1970] by [@matthewfarwell][@matthewfarwell]
- Adds more diagnostic info for undefined settings.
  [#2008][2008]/[#2009][2009] by [@DavidPerezIngeniero][@DavidPerezIngeniero]
- Adds an `Extracted.runInputTask` helper to assist with imperatively executing input tasks. [#2006][2006] by [@jroper][@jroper]
- Renames `distinct` method on `PathFinder` to `distinctName`. [#1973][1973] by [@eed3si9n][@eed3si9n]
- Adds `distinctPath` method on `PathFinder`. [#1973][1973] by [@eed3si9n][@eed3si9n]

### Bug fixes

- Fixes memory/performance/correctness issue with cached resolution. See below.
- Correct incremental compile debug message for invalidated products [#1961][1961] by [@jroper][@jroper]
- Enables forced GC by default. See below.
- Fixes Maven compatibility to read `maven-metadata.xml`. See below.
- Captures errors on `help` command. [#1900][1900]/[#1940][1940] by [@DavidPerezIngeniero][@DavidPerezIngeniero]
- Prevents history command(s) from going into an infinite loop [#1562][1562] by [@PanAeon][@PanAeon]
- Honors overwrite flag when publishing locally. [#1960][1960] by [@asflierl][@asflierl]
- Fixes a certain class of pom corruption that can occur in the presence of parent-poms. [#1856][1856] by [@jsuereth][@jsuereth]
- Adds dependency-level exclusions in the POM for project-level exclusions. [#1877][1877]/[#2035][2035] by [@dwijnand][@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.

[#1828][1828]/[#1992][1992] by [@dwijnand][@dwijnand]

### 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

[#2001][2001]/[#2027][2027] by [@cunei][@cunei]

### `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][1950]/[#1987][1987] by [@ajsquared][@ajsquared]

### Cached resolution fixes

On a larger dependency graph, the JSON file growing to be 100MB+
with 97% of taken up by *caller* information.
To make the matter worse, these large JSON files were never cleaned up.

sbt 0.13.9 filters out artificial or duplicate 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.

sbt 0.13.9 also fixes a correctness issue that was found in the earlier releases.
Under some circumstances, libraries that shouldn't have been evicted was being evicted.
This occurred when library `A1` depended on `B2`, but a newer `A2` dropped the dependency,
and `A2` and `B1` are also is in the graph. This is fixed by sorting the graph prior to eviction.

[#2030][2030]/[#1721][1721]/[#2014][2014]/[#2046][2046]/[#2097][2097]/[#2129][2129] by [@eed3si9n][@eed3si9n]

### Force GC

[@cunei][@cunei] in [#1223][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 disabled using by setting false to `forcegc`
setting or `sbt.task.forcegc` flag.

[#1773][1773] by [@eed3si9n][@eed3si9n]

### Maven compatibility fix

To resolve dynamic versions such as `SNAPSHOT` and version ranges, the dependency resolution engine
queries for the list of available versions.
For Maven repositories, it was supposed read `maven-metadata.xml` first, but
because sbt customizes the repository layout for cross building, it has been falling back
to screen scraping of the Apache directory listing.
This problem surfaced as:

- Version range not working for artifacts hosted on Bintray. [#2005][2005]
- Potentially other `SNAPSHOT` related issues.

sbt 0.13.9 fixes this by relaxing the Maven compatibility check, so it will read `maven-metadata.xml`. [#2075][2075] by [@eed3si9n][@eed3si9n]

### Contributors

Special thanks to the contributors for making this release a success. Compared to 0.13.8, there were 127 (non-merge) commits, by 14 contributors: Eugene Yokota, Dale Wijnand, Josh Suereth, Andrew Johnson, David Perez, Matthew Farwell, Antonio Cunei, Andrzej Jozwik, James Roper, Vitalii Voloshyn, Benjy, Kamil Kloch, Max Worgan, Andreas Flierl. Thank you!
