sbt, the interactive build tool
++
fall back to a bincompat Scala version by @eed3si9n in https://github.com/sbt/sbt/pull/7328
Full Changelog: https://github.com/sbt/sbt/compare/v1.9.1...v1.9.2
sbt 1.9.1 is the first release of sbt after changing to Scala CLA in #7306 etc. A number of contributors to sbt voiced concerns about donating our work to Lightbend after 2022, and Lightbend, Scala Center, and I agreed on changing the contributor license agreement such that the copyright would tranfer to Scala Center, a non-profit organization. sbt and its subcompoments, including Zinc, will remain available under Apache v2 license.
publish / skip
is set true
by @adpi2 in #7295
sbtPluginPublishLegacyMavenStyle := false
by @adpi2 in #7286
sbt console
being slow by @andrzejressel in #7280
exportPipelining
key by @alexklibisz in #7291
dependencyBrowseGraph
and dependencyDot
render in color by @sideeffffect in #7301. This can be opted-out using dependencyDotNodeColors
setting.sbt new
default menu by @katlasik in #7300
sbt new
default menu extensible via templateDescriptions
setting key and templateRunLocal
input key by @eed3si9n in #7304
semanticdbVersion
to 4.7.8 by @ckipp01 in #7294
@tailrec
annotation by @xuwei-k in zinc#1209
DEVELOPING.md
by @dongxuwang in #7299
java.net.URL
constructor by @xuwei-k in #7315
filter
to withFilter
where possible by @xuwei-k in #7317
Full Changelog: https://github.com/sbt/sbt/compare/v1.9.0...v1.9.1
IntegrationTest
configuration. See below.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.
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-consistent style 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 adventuresbt 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.
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
settingsbt 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.
libraryDependencySchemes
not overriding assumedVersionScheme
lm#415 by @adriaanm
RunProfiler
available by @dragos in #7215
publishLocal / skip
work by @mdedetrich in #7165
-Vdebug
by @som-snytt in zinc#1141
settings.xml
properties expansion by @nrinaudo in lm#413
FileFilter.nothing
and FileFilter.everything
by @mdedetrich in io#340
Resolver.ApacheMavenSnapshotsRepo
by @mdedetrich
java.net.URL
constructor by @xuwei-k in io#341
LoggerContext
and Terminal
by @adpi2 in #7191
ClassFileManager
from IncOptions
in Incremental.prune
by @lrytz in zinc1148
Problem#diagnosticRelatedInforamation
by @ckipp01 in #7241
Replaces olafurpg/setup-scala with actions/setup-java by @mzuehlke in #7154
Uses sonatypeOssRepos
instead of sonatypeRepo
by @yoshinorin in #7227
sbt.io.IO.withTemporaryFile
not limiting access on Unix-like systems in io#344/zinc#1185 by @eed3si9n
Problem#diagnosticRelatedInforamation
by @ckipp01 in #7241
actions
to Problem
, allowing the compiler to forward actions that can address diagnostics, by @ckipp01 in #7242 and @eed3si9n in #7251/zinc#1186
libraryDependencySchemes
not overriding assumedVersionScheme
lm#415 by @adriaanm
sbt new
by @eed3si9n
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.
sbt new
, a text-based adventuresbt 1.9.0 adds text-based menu when sbt new
or sbt init
is called without arguments:
$ sbt -Dsbt.version=1.9.0-RC3 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 in #7228.
releaseNotesURL
settingsbt 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.
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.
IntegrationTest
configuration by @eed3si9n. See above.libraryDependencySchemes
not overriding assumedVersionScheme
lm#415 by @adriaanm
RunProfiler
available by @dragos in #7215
publishLocal / skip
work by @mdedetrich in #7165
-Vdebug
by @som-snytt in zinc#1141
settings.xml
properties expansion by @nrinaudo in lm#413
FileFilter.nothing
and FileFilter.everything
by @mdedetrich in io#340
Resolver.ApacheMavenSnapshotsRepo
by @mdedetrich
java.net.URL
constructor by @xuwei-k in io#341
LoggerContext
and Terminal
by @adpi2 in #7191
ClassFileManager
from IncOptions
in Incremental.prune
by @lrytz in zinc1148
Problem#diagnosticRelatedInforamation
by @ckipp01 in #7241
actions
to Problem
, allowing the compiler to forward actions that can address diagnostics, by @ckipp01 in #7242 and @eed3si9n in #7251/zinc#1186
Replaces olafurpg/setup-scala with actions/setup-java by @mzuehlke in #7154
Uses sonatypeOssRepos
instead of sonatypeRepo
by @yoshinorin in #7227
Full Changelog: https://github.com/sbt/sbt/compare/v1.8.3...v1.9.0-RC3
sbt.io.IO.withTemporaryFile
not limiting access on Unix-like systems in io#344/zinc#1185 by @eed3si9n
sbt 1.8.3 fixes sbt.io.IO.withTemporaryFile
etc not limiting access on Unix-like systems. Prior to this patch release, some functions were using java.io.File.createTempFile
, which does not set strict file permissions, as opposed to the NIO-equivalent that does.
This means that on a shared Unix-like systems, build user or plugin's use of sbt.io.IO.withTemporaryFile
etc would have exposed the information to other users.
This issue was reported by Oleksandr Zolotko at IBM, and was fixed by Eugene Yokota (@eed3si9n) in io#344/zinc#1185.
sbt 1.8.3 backports Zinc and IO fixes from 1.9.0-RC2 as well.
Fixes Zinc incremental compilation looping infinitely zinc#1182 by @CarstonSchilds
Fixes spurious whitespace in the runner script by @keynmol in #7134
Fixes NullPointerError under -Vdebug
by @som-snytt in zinc#1141
Avoids deprecated java.net.URL
constructor by @xuwei-k in io#341
Notifies ClassFileManager
from IncOptions
in Incremental.prune
by @lrytz in zinc1148
Adds FileFilter.nothing
and FileFilter.everything
by @mdedetrich in io#340
libraryDependencySchemes
not overriding assumedVersionScheme
lm#415 by @adriaanm
sbt new
by @eed3si9n
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.
sbt new
, a text-based adventuresbt 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 in #7228.
releaseNotesURL
settingsbt 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.
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.
IntegrationTest
configuration by @eed3si9n. See above.libraryDependencySchemes
not overriding assumedVersionScheme
lm#415 by @adriaanm
RunProfiler
available by @dragos in #7215
publishLocal / skip
work by @mdedetrich in #7165
-Vdebug
by @som-snytt in zinc#1141
settings.xml
properties expansion by @nrinaudo in lm#413
FileFilter.nothing
and FileFilter.everything
by @mdedetrich in io#340
Resolver.ApacheMavenSnapshotsRepo
by @mdedetrich
java.net.URL
constructor by @xuwei-k in io#341
LoggerContext
and Terminal
by @adpi2 in #7191
ClassFileManager
from IncOptions
in Incremental.prune
by @lrytz in zinc1148
Replaces olafurpg/setup-scala with actions/setup-java by @mzuehlke in #7154
Uses sonatypeOssRepos
instead of sonatypeRepo
by @yoshinorin in #7227
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.
sbt new
, a text-based adventuresbt 1.9.0 adds text-based menu when sbt new
is called without arguments:
$ sbt -Dsbt.version=1.9.0-RC1 new
....
Welcome to sbt new!
Here are some templates to get started:
1) scala/toolkit.local - Scala Toolkit (beta) by Scala Center and VirtusLab
2) typelevel/toolkit.local - Toolkit to start building Typelevel apps
3) sbt/cross-platform.local - A cross-JVM/JS/Native project
4) scala/scala-seed.g8 - Scala 2 seed template
5) playframework/play-scala-seed.g8 - A Play project in Scala
6) playframework/play-java-seed.g8 - A Play project in Java
7) scala-js/vite.g8 - A Scala.JS + Vite project
8) holdenk/sparkProjectTemplate.g8 - A Scala Spark project
9) spotify/scio.g8 - A Scio project
10) disneystreaming/smithy4s.g8 - A Smithy4s project
q) quit
Select a template (default: 1):
Unlike Giter8, .local
template creates build.sbt
etc in the current directory, and reboots into an sbt session.
This was contributed by Eugene Yokota in #7228.
IntegrationTest
configurationsbt 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.
releaseNotesURL
settingsbt 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.
IntegrationTest
configuration by @eed3si9n. See RFC-3 for more details.RunProfiler
available by @dragos in #7215
publishLocal / skip
work by @mdedetrich in #7165
-Vdebug
by @som-snytt in zinc#1141
settings.xml
properties expansion by @nrinaudo in lm#413
FileFilter.nothing
and FileFilter.everything
by @mdedetrich in io#340
Resolver.ApacheMavenSnapshotsRepo
by @mdedetrich
java.net.URL
constructor by @xuwei-k in io#341
LoggerContext
and Terminal
by @adpi2 in #7191
ClassFileManager
from IncOptions
in Incremental.prune
by @lrytz in zinc1148
Replaces olafurpg/setup-scala with actions/setup-java by @mzuehlke in #7154
Uses sonatypeOssRepos
instead of sonatypeRepo
by @yoshinorin in #7227
PATH
environment variable case insensitive by #7085 by @dos65
Full Changelog: https://github.com/sbt/sbt/compare/v1.8.0...v1.8.1
-Dsbt.argsfile=false
or SBT_ARGSFILE
environment variable) #7010 by @easel
buildTarget/outputPaths
method of Build Server Protocol. #6985 by @povder
Full Changelog: https://github.com/sbt/sbt/compare/v1.7.1...v1.8.0