Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.13.0->0.13.18Release Notes
sbt/sbt (sbt/sbt)
v0.13.18: 0.13.18Compare Source
^^#3923 by @xuwei-kv0.13.17: 0.13.17Compare Source
Improvements
Bug fixes
cleanconcurrency fix. #2156/#3834 by @dwijnandscala.ext.dir. #3142/#3701 by @retronymaddSbtPluginto use the correct version of sbt. #3393/#3397 by @dwijnandaddCompilerPlugin(...)so it can consume compiler plugins published to Ivy repository using sbt 1.x. #3784/#3855 by @eed3si9nInternal
docfriendly. #3401 by @dwijnandv0.13.16: 0.13.16Compare Source
Fixes with compatibility implications
sbt xxx shellto stay in shell afterxxx. #3091/#3153 by @dwijnandImprovements
^and^^commands for plugin cross building. See below.Zeroscope component for sbt 1.0 compatibility. #3179 by @eed3si9nwithXXXmethods forModuleIDandArtifactfor sbt 1.0 compatibility. #3215 by @eed3si9nBug fixes
scalaBinaryVersionfor Dotty. #3152 by @smarterNumberFormatException. #3265 by @Rogachsbt-cross-building
@jrudolph's sbt-cross-building is a plugin author's plugin.
It adds cross command
^and sbtVersion switch command^^, similar to+and++,but for switching between multiple sbt versions across major versions.
sbt 0.13.16 merges these commands into sbt because the feature it provides is useful as we migrate plugins to sbt 1.0.
To switch the
sbtVersion in pluginCrossBuildfrom the shell use:Your plugin will now build with sbt 1.0.0-RC2 (and its Scala version 2.12.2).
If you need to make changes specific to a sbt version, you can now include them into
src/main/scala-sbt-0.13,and
src/main/scala-sbt-1.0, where the binary sbt version number is used as postfix.To run a command across multiple sbt versions, set:
Then, run:
#3133 by @eed3si9n
Eviction warning presentation
sbt 0.13.16 improves the eviction warning presentation.
Before:
After:
#3202 by @eed3si9n
Improvements and bug fixes to the startup messages
sbt writes out the
sbt.versioninproject/build.propertiesif it is missing.sbt 0.13.16 fixes the logging when it happens by using the logger.
We encourage the use of the sbt shell by running
sbt, instead of runningsbt compilefrom the terminal repeatedly.The sbt shell keeps the JVM warm, and there is a significant performance improvement gained for your compilation.
The startup message that we added in sbt 0.13.15 was a bit too aggressive, so we are toning it down in 0.13.16.
It will only be triggered for
sbt compile, and it can also be suppressed withsuppressSbtShellNotification := true.#3091/#3097/#3147 by @dwijnand
v0.13.15: 0.13.15Compare Source
Fixes with compatibility implications
Improvements
[ENTER]while sbt is running. #2987/#2996 by @dwijnandAppendinstance to supportsourceGenerators += Def.task { ... }, instead of needing.taskValue. #2943 by @eed3si9nproject/build.propertiesif it is missing. #754/#3025 by @dwijnandsets
scalaCompilerBridgeSourcecorrectly, this reduces the boilerplate neededto make a dotty project. Note that dotty support in sbt is still considered
experimental and not officially supported, see dotty.epfl.ch for
more information. #2902 by @smarter
It is now possible to run a subset of scripted tests in a directory at once,
for example:
scripted source-dependencies/*1of3
Will create three pages and run page 1. This is especially useful when running
scripted tests on a CI, to benefit from the available parallelism. 3013 by @smarter
Bug fixes
:=and.valuemacros. #1444/#2908 by @dwijnandCompile. #2827/#2786 by @eed3si9nCompile. #2828/#1466 by @eed3si9nPackage.makeJardeleting directory recursively. #3014 by @larsrhMaven version range improvement
Previously, when the dependency resolver (Ivy) encountered a Maven version range such as
[1.3.0,)it would go out to the Internet to find the latest version.
This would result to a surprising behavior where the eventual version keeps changing over time
even when there's a version of the library that satisfies the range condition.
Starting sbt 0.13.15, some Maven version ranges would be replaced with its lower bound
so that when a satisfactory version is found in the dependency graph it will be used.
You can disable this behavior using the JVM flag
-Dsbt.modversionrange=false.#2954 by @eed3si9n
Offline installation
sbt 0.13.15 adds two new repositories called "local-preloaded-ivy"
and "local-preloaded" that point to
~/.sbt/preloaded/.The purpose for the repositories is to preload them with
sbt artifacts so the installation of sbt will not require access to the Internet.
This also improves the startup time of sbt when you first run it
since the resolution happens off of a local-preloaded repository.
#2993/#145 by @eed3si9n
Notes
No changes should be necessary to your project definition and all plugins published for sbt 0.13.{x|x<14} should still work.
See Migrating from sbt 0.12.x for details on the old operator deprecation.
Special thanks to the contributors for making this release a success. According to
git shortlog -sn --no-merges v0.13.13..0.13.15, compared to 0.13.13, there were 64 (non-merge) commits, by eleven contributors: Eugene Yokota, Dale Wijnand, Guillaume Martres, Jason Zaugg, Lars Hupel, Petro Verkhogliad, Eric Richardson, Claudio Bley, Haochi Chen, Paul Draper, Ashley Mercer. Thank you!v0.13.14Compare Source
0.13.14 is dead on arrival. https://github.com/sbt/sbt/issues/3086
v0.13.13: 0.13.13Compare Source
Fixes with compatibility implications
.valuemethod is deprecated for input tasks. Calling.valueon an input key returns anInputTask[A],which is completely unintuitive and often results in a bug. In most cases
.evaluatedshould be called,which returns
Aby evaluating the task.Just in case
InputTask[A]is needed,.inputTaskValuemethod is now provided. #2709 by @eed3si9n--<command>that was added in 0.13.1 toearly(<command>). This fixes the regression #1041. For backward compatibility--error,--warn,--info, and--debugwill continue to function during the 0.13 series, but it is strongly encouraged to migrate to the single hyphen options:-error,-warn,-info, and-debug. #2742 by @eed3si9nshowwhen key returns aSeqby showing the elements one per line. Disable with-Dsbt.disable.show.seq=true. #2755 by @eed3si9n-Dsbt.disable.interface.classloader.cache=true. #2754 by @retronymImprovements
newcommand andtemplateResolverInfos. See below for more details.aggregateProjects(..)for the current project inside a build sbt file. #2682 by @xuwei-k.jvmoptssupport to the launcher script. sbt/sbt-launcher-package#111 by @fommil.java-versionsupport to the Windows launcher script. sbt/sbt-launcher-package#111 by @fommil-errorin script mode usingscalas. #840/#2746 by @eed3si9nCrossVersion.patchwhich sits in betweenCrossVersion.binaryandCrossVersion.fullin that it strips off anytrailing
-bin-...suffix which is used to distinguish variant but binary compatible Scala toolchain builds. Most thingswhich are currently
CrossVersion.full(eg. Scala compiler plugins, esp. macro-paradise) would be more appropriatelydepended on as
CrossVersion.patchfrom this release on.Bug fixes
scalaOrganizationis set. #2703 by @milessabinTags.ForkedTestGroup. #2677/#2681 by @pauldrapernew command and templateResolverInfos
sbt 0.13.13 adds a
newcommand, which helps create new build definitions.The
newcommand is extensible via a mechanism called the template resolver.A template resolver pattern matches on the passed in arguments after
new,and if it's a match it will apply the template.
As a reference implementation, template resolver for Giter8 is provided. For instance:
will run eed3si9n/hello.g8 using Giter8.
#2705 by @eed3si9n
Synthetic subprojects
sbt 0.13.13 adds support for
AutoPlugins to define subprojects programmatically,by overriding the
extraProjectsmethod:In addition, subprojects may be derived from an existing subproject
by overriding
derivedProjects:#2532/#2717/#2738 by @eed3si9n
Deprecate old sbt 0.12 DSL
The no-longer-documented operators
<<=,<+=, and<++=and tuple enrichments are deprecated,and will be removed in sbt 1.0.
Generally,
should migrate to
Except for source generators, which requires task values:
This becomes:
Another exception is input task:
This becomes:
See Migrating from sbt 0.12.x for more details.
#2716/#2763/#2764 by @eed3si9n and @dwijnand
Notes
No changes should be necessary to your project definition and all plugins published for sbt 0.13.{x|x<12} should still work.
Special thanks to the contributors for making this release a success. According to git shortlog -sn --no-merges v0.13.12..v0.13.13, compared to 0.13.12, there were 63 (non-merge) commits, by 9 contributors: Eugene Yokota, Dale Wijnand, Martin Duhem, Miles Sabin, Jaroslaw Grabowski, Kenji Yoshida, Jason Zaugg, Paul Draper, Björn Antonsson. Thank you!
v0.13.12: 0.13.12Compare Source
Fixes with compatibility implications
scalaVersionandscalaOrganization. Previously a user specifiedscalaOrganizationwould not have affected transitivedependencies on, eg.
scala-reflect. An Ivy-level mechanism is used for this purpose, and as a consequencethe overriding happens early in the resolution process which might improve resolution times, and as a side
benefit fixes #2286. The old behavior can be restored by adding
ivyScala := { ivyScala.value map {_.copy(overrideScalaVersion = sbtPlugin.value)} }to your build. #2286/#2634 by @milessabin
.sbtformat #2530 by @dwijnandImprovements
RecompileOnMacroDefis enabled, sbt will now print out a info level log indicating that some sources are being recompiled because it's used from a source that contains a macro definition. Can be disabled withincOptions := incOptions.value.withLogRecompileOnMacro(false)#2637/#2659 by @eed3si9n/@dwijnanddependsOnfor the current project inside a.sbtfile. #2653 by @anatolydwnldBug fixes
IndexOutOfBoundsExceptionin ExtractAPI #2497/#2557 by @smarterincOptions := incOptions.value.withIncludeSynthToNameHashing(true)for name hashing not including synthetic methods. This will not be enabled by default in sbt 0.13. It can also enabled by passingsbt.inc.include_synth=trueto JVM. #2537 by @eed3si9nNotes
No changes should be necessary to your project definition and all plugins published for sbt 0.13.{x|x<12} should still work. Please report any issues you encounter if this is not the case.
Special thanks to the contributors for making this release a success. According to
git shortlog -sn --no-merges v0.13.11..0.13.12, compared to 0.13.11, there were 83 (non-merge) commits, by 11 contributors: Eugene Yokota, Martin Duhem, Grzegorz Kossakowski, Dale Wijnand, Guillaume Martres, Jason Zaugg, Miles Sabin, Tim Harper, ddworak, ekrich, Anatoly Fayngelerin. Thank you!v0.13.11: 0.13.11Compare Source
Fixes with compatibility implications
useJCentercan be set totrueto re-include it, as the first external resolver to find library dependencies. #2217/#2467 by @eed3si9nwithInterProjectFirstto the update option, which is enabled by default. When set totrue,inter-projectresolver will be prioritized above all resolvers and Ivy cache. #1827 by @eed3si9nwithLatestSnapshotsso it handles modules without an artifact. This flag will be enabled by default.#1514/#1616/#2313 by @eed3si9n
-J<flag>options to the local Java compiler. #1968/#2272 by @Duhemmsbt.global.autoimportflag istrue. #2120/#2399 by @timcharperImprovements
publishMavenStyleistrue,updatetask warns when it sees intransitive dependencies, which do not translate to Maven. #2127 by @jsuerethDef.settings, which facilitates mixing settings with seq of settings. See below.Logger.Nullpublic. #2094 by @pdalpraAppend.Sequenceinstance forListto allow+=/++=ondeveloperssetting. #2107/#2114 by @pdalprasealedfrom the typeclasses inAppend. #2322 by @dwijnandlocalIfFiletoMavenRepository, to force artifacts to be copied to the cache. #2172 by @dwijnandResolver.bintrayIvyRepo(owner, repo). #2285 by @dwijnand-Joptions. sbt/sbt-launcher-package#105Bug fixes
@Duhemm
sbt.Execute. #2302/#2303 by @jrudolphupdateClassifiersdownloading updated snapshot sources and docs.#1750/sbt/ivy#17/#2163/sbt/ivy#18/#2186 by @dwijnand
updateClassifierson Ivy modules withoutdefaultconfiguration.#2264 by @eed3si9n/@Duhemm
correctly trigger incremental compilation for downstream classes. This is to
account for the fact that Java compilers may inline constant fields in
downstream classes. #1967/#2085 by @stuhood
ListBuffer#readOnly. #2095 by @adriaanm@Duhemm
tasksandsettingscommand. #2192 by @DavidPerezIngenierojavacby always failing if the local Java compiler reported errors. #2228/#2271 by @DuhemmJavaErrorParserto parse non-compile-errors #2256/#2272 by @Duhemmsbt-ivy-snapshotsrepository to resolve nightly builds. @eed3si9ncompileLate. #2453 by @retronymSBT_OPTS. sbt/sbt-launcher-package#101 by @eed3si9nConfigurable Scala compiler bridge
sbt 0.13.11 adds
scalaCompilerBridgeSourcesetting to specify the compiler brigde source. This allows different implementation of the bridge for Scala versions, and also allows future versions of Scala compiler implementation to diverge. The source module will be retrieved using library management configured bybootIvyConfigurationtask.#2106/#2197/#2336 by @Duhemm
Dotty awareness
sbt 0.13.11 will assume that Dotty is used when
scalaVersionstarts with0..The built-in compiler bridge in sbt does not support Dotty,
but a separate compiler bridge is being developed at smarter/dotty-bridge and
an example project that uses it is available at smarter/dotty-example-project.
#2344 by @smarter
Inter-project dependency tracking
sbt 0.13.11 adds
trackInternalDependenciesandexportToInternalsettings. These can be used to control whether to trigger compilation of a dependent subprojects when you callcompile. Both keys will take one of three values:TrackLevel.NoTracking,TrackLevel.TrackIfMissing, andTrackLevel.TrackAlways. By default they are both set toTrackLevel.TrackAlways.When
trackInternalDependenciesis set toTrackLevel.TrackIfMissing, sbt will no longer try to compile internal (inter-project) dependencies automatically, unless there are no*.classfiles (or JAR file whenexportJarsistrue) in the output directory. When the setting is set toTrackLevel.NoTracking, the compilation of internal dependencies will be skipped. Note that the classpath will still be appended, and dependency graph will still show them as dependencies. The motivation is to save the I/O overhead of checking for the changes on a build with many subprojects during development. Here's how to set all subprojects toTrackIfMissing.The
exportToInternalsetting allows the dependee subprojects to opt out of the internal tracking, which might be useful if you want to track most subprojects except for a few. The intersection of thetrackInternalDependenciesandexportToInternalsettings will be used to determine the actual track level. Here's an example to opt-out one project:#2266/#2354 by @eed3si9n
Def.settings
Using
Def.settingsit is now possible to nicely define settings as such:#2151 by @dwijnand
Notes
No changes should be necessary to your project definition and all plugins published for sbt 0.13.{x|x<11} should still work. Please report any issues you encounter if this is not the case.
Special thanks to the contributors for making this release a success. According to git shortlog -sn --no-merges v0.13.9..v0.13.11, [compared to 0.13.9][3], there were 201 (non-merge) commits, by 19 contributors: Martin Duhem, Eugene Yokota, Dale Wijnand, Stu Hood, Adriaan Moors, Pierre DAL-PRA, Grzegorz Kossakowski, fkorotkov, Josh Suereth, Huw Giddens, Tim Harper, Guillaume Martres, Antonio Cunei, Krzysztof Romanowski, David Perez, Jason Zaugg, Jacek Laskowski, Johannes Rudolph, Jonas Fonseca. Thank you!
v0.13.9: 0.13.9Compare Source
Fixes with compatibility implications
crossScalaVersionsdefault value is fixed back to the older 0.12.x behavior. See below for details.withSources()orwithJavadoc(). See below for details.Improvements
retrieveManagedrelated improvements. See below for details.-=and--=for settings and tasks, which are the opposites of+=and++=. #1922 by @dwijnandinThisBuild, similar toinConfig, to allow specifying multiple settings inThisBuildscope. #1847/#1989 by @dwijnandforceUpdatePeriodkey, that takes values ofOption[FiniteDuration]. If set, a fullupdatewill occur after that amount of time without needing to explicitly run theupdatetask. By @ajsquaredForkError.getMessage()to include exception's original name. #2028 by @kamilklochinspect actual. #1651/#1990 by @dwijnandtestOnly/testQuickwith-, for example-MySpec.#1970 by @matthewfarwell
#2008/#2009 by @DavidPerezIngeniero
Extracted.runInputTaskhelper to assist with imperatively executing input tasks. #2006 by @jroperdistinctmethod onPathFindertodistinctName. #1973 by @eed3si9ndistinctPathmethod onPathFinder. #1973 by @eed3si9nBug fixes
maven-metadata.xml. See below.helpcommand. #1900/#1940 by @DavidPerezIngenierocrossScalaVersionsdefault valueAs of this fix
crossScalaVersionsreturns to the behaviour present in0.12.4whereby it defaults to whatscalaVersionis set to, for example ifscalaVersionis set to"2.11.6",crossScalaVersionsnow defaultsto
Seq("2.11.6").Therefore when upgrading from any version between
0.13.0and0.13.8be aware of this new default ifyour build setup depended on it.
#1828/#1992 by @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/#2027 by @cunei
retrieveManagedrelated improvementssbt 0.13.9 adds
retrieveManagedSynckey that, when set totrue, enables synchronizing retrieved to the current build by removed unneeded files.It also adds
configurationsToRetrievekey, that takes values ofOption[Set[Configuration]]. If set, whenretrieveManagedis 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.
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
OutOfMemoryExceptionseen 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 occured when library
A1depended onB2, but a newerA2dropped the dependency,and
A2andB1are also is in the graph. This is fixed by sorting the graph prior to eviction.#2030/#1721/#2014/#2046/#2097/#2129 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
forcegcsetting or
sbt.task.forcegcflag.#1773 by @eed3si9n
Maven compatibility fix
To resolve dynamic versions such as
SNAPSHOTand version ranges, the dependency resolution enginequeries for the list of available versions.
For Maven repositories, it was supposed read
maven-metadata.xmlfirst, butbecause 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:
SNAPSHOTrelated issues.sbt 0.13.9 fixes this by relaxing the Maven compatiblity check, so it will read
maven-metadata.xml. #2075 by @eed3si9nContributors
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!
v0.13.8: 0.13.8Compare Source
Changes with compatibility implications
IvyPluginby default (-Dsbt.root.ivyplugin=truewill revert this behavior). #1871/#1869 by @dwijnandImprovements
evictedwill display all evictions (including the ones not suspected of binary incompatibility). #1615 by @eed3si9n--depth 1for git clone. #1787 by @xuwei-kFixes
compilerReporteris fed to javac during incremental compilation. #1542 by @jsuerethRolling back XML parsing workaround
sbt 0.13.7 implemented natural whitespace handling by switching
build.sbtparsing to use Scala compiler, instead of blank line delimiting. We realized that some build definitions no longer parsed due to the difference in XML handlinConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.