Changes with compatibility implications
- Deprecates
IntegrationTest
configuration. See below. - Updates underlying Coursier to 2.1.2 by @eed3si9n.
Deprecation of IntegrationTest configuration
sbt 1.9.0 deprecates IntegrationTest
configuration. (RFC-3 proposes to deprecate general use of configuration axis beyond Compile
and Test
, and this is the first installment of the change.)
The recommended migration path is to create a subproject named "integration", or "foo-integration" etc.
lazy val integration = (project in file("integration"))
.dependsOn(core) // your current subproject
.settings(
publish / skip := true,
// test dependencies
libraryDependencies += something % Test,
)
From the shell you can run:
> integration/test
Assuming these are slow tests compared to the regular tests, I might not aggregate them at all from other subprojects, and maybe only run it on CI, but it's up to you.
Why deprecate IntegrationTest
? IntegrationTest
was a demoware for the idea of custom configuration axis, and now that we are planning to deprecate the mechanism to simplify sbt, we wanted to stop advertising it. We won't remove it during sbt 1.x series, but deprecation signals the non-recommendation status.
This was contributed by @eed3si9n and @mdedetrich in lm#414/#7261.
POM consistency of sbt plugin publishing
sbt 1.9.0 publishes sbt plugin to Maven repository in a POM-consistent way. sbt has been publishing POM file of sbt plugins as sbt-something-1.2.3.pom
even though the artifact URL is suffixed as sbt-something_2.12_1.0
. This allowed "sbt-something" to be registered by Maven Central, allowing search. However, as more plugins moved to Maven Central, it was considered that keeping POM consisntency rule was more important, especially for corporate repositories to proxy them.
sbt 1.9.0 will publish using both the conventional POM-inconsistent style and POM-consisntent sytle so prior sbt releases can still consume the plugin. However, this can be opted-out using sbtPluginPublishLegacyMavenStyle
setting.
This fix was contributed by Adrien Piquerez (@adpi2) at Scala Center in coursier#2633, sbt#7096 etc. Special thanks to William Narmontas (@ScalaWilliam) and Wudong Liu (@wudong) whose experimental plugin sbt-vspp paved the way for this feature.
sbt new
, a text-based adventure
sbt 1.9.0 adds text-based menu when sbt new
or sbt init
is called without arguments:
$ sbt -Dsbt.version=1.9.0-RC2 init
....
Welcome to sbt new!
Here are some templates to get started:
a) scala/toolkit.local - Scala Toolkit (beta) by Scala Center and VirtusLab
b) typelevel/toolkit.local - Toolkit to start building Typelevel apps
c) sbt/cross-platform.local - A cross-JVM/JS/Native project
d) scala/scala-seed.g8 - Scala 2 seed template
e) playframework/play-scala-seed.g8 - A Play project in Scala
f) playframework/play-java-seed.g8 - A Play project in Java
g) scala-js/vite.g8 - A Scala.JS + Vite project
i) holdenk/sparkProjectTemplate.g8 - A Scala Spark project
m) spotify/scio.g8 - A Scio project
n) disneystreaming/smithy4s.g8 - A Smithy4s project
q) quit
Select a template (default: a):
Unlike Giter8, .local
template creates build.sbt
etc in the current directory, and reboots into an sbt session.
This was contributed by Eugene Yokota (@eed3si9n) in #7228.
Actionable diagnostics steps
sbt 1.9.0 adds actions
to Problem
, allowing the compiler to suggest code edits as part of the compiler warnings and errors in a structual manner.
See Roadmap for actionable diagnostics for more details. The changes were contributed by @ckipp01 in #7242 and @eed3si9n in bsp#527/#7251/zinc#1186 etc.
releaseNotesURL
setting
sbt 1.9.0 adds releaseNotesURL
setting, which creates info.releaseNotesUrl
property in the POM file. This will then be used by Scala Steward. See
Add release notes URLs to your POMs for details.
This was contributed by Arman Bilge in lm#410.
Other updates
- Updates Scala 2.13 cross build for Zinc to 2.13.10 to address CVE-2022-36944 by @rhuddleston
- Updates underlying Scala to 2.12.18 for JDK 21-ea in #7271 by @eed3si9n.
- Fixes Zinc incremental compilation looping infinitely zinc#1182 by @CarstonSchilds
- Fixes
libraryDependencySchemes
not overridingassumedVersionScheme
lm#415 by @adriaanm - Fixes spurious whitespace in the runner script by @keynmol in #7134
- Makes
RunProfiler
available by @dragos in #7215 - Makes
publishLocal / skip
work by @mdedetrich in #7165 - Fixes NullPointerError under
-Vdebug
by @som-snytt in zinc#1141 - Fixes Maven
settings.xml
properties expansion by @nrinaudo in lm#413 - Adds
FileFilter.nothing
andFileFilter.everything
by @mdedetrich in io#340 - Adds
Resolver.ApacheMavenSnapshotsRepo
by @mdedetrich - Avoids deprecated
java.net.URL
constructor by @xuwei-k in io#341 - Updates to Swoval 2.1.10 by @eatkins in io#343
- Updates to sbt-giter8-resolver 0.16.2 by @eed3si9n
- Fixes dead lock between
LoggerContext
andTerminal
by @adpi2 in #7191 - Notifies
ClassFileManager
fromIncOptions
inIncremental.prune
by @lrytz in zinc1148 - Updates usage info for java-home in the runner script by @liang3zy22 in #7171
- Deprecates misspelled
Problem#diagnosticRelatedInforamation
by @ckipp01 in #7241 - Adds built-in support for weaver-cats test framework #7263 by @kubukoz
Behind the scene
- Replaces olafurpg/setup-scala with actions/setup-java by @mzuehlke in #7154
- Uses
sonatypeOssRepos
instead ofsonatypeRepo
by @yoshinorin in #7227