sbt/notes/0.13.16.markdown

4.4 KiB

Fixes with compatibility implications

  • Removes the "hit [ENTER] to switch to interactive mode" feature. Run sbt xxx shell to stay in shell after xxx. #3091/#3153 by @dwijnand

Improvements

  • Improves the new startup messages. See below.
  • Ports sbt-cross-building's ^ and ^^ commands for plugin cross building. See below.
  • Adds Zero scope component for sbt 1.0 compatibility. #3179 by @eed3si9n
  • Backports withXXX methods for ModuleID and Artifact for sbt 1.0 compatibility. #3215 by @eed3si9n

Bug fixes

  • Fixes the new startup messages. See below.
  • Fixes forward compatibility of Scripted plugin with sbt 1.0.0-RC2. #3329 by @dwijnand
  • Fixes ScalaTest nested suite test names being reported as "(It is not a test)". [#3154][3154] by @jameskoch
  • Fixes default scalaBinaryVersion for Dotty. #3152 by [@smarter][@smater]
  • Updates JLine dependency to 2.14.4 to work around ncurses change causing NumberFormatException. #3265 by @Rogach

sbt-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 pluginCrossBuild from the shell use:

^^ 1.0.0-RC2

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:

crossSbtVersions := Vector("0.13.15", "1.0.0-RC2")

Then, run:

^ compile

#3133 by @eed3si9n

Eviction warning presentation

sbt 0.13.16 improves the eviction warning presetation.

Before:

[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]  * com.google.code.findbugs:jsr305:2.0.1 -> 3.0.0
[warn] Run 'evicted' to see detailed eviction warnings

After:

[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn]
[warn]      * com.typesafe.akka:akka-actor_2.12:2.5.0 is selected over 2.4.17
[warn]          +- de.heikoseeberger:akka-log4j_2.12:1.4.0            (depends on 2.5.0)
[warn]          +- com.typesafe.akka:akka-parsing_2.12:10.0.6         (depends on 2.4.17)
[warn]          +- com.typesafe.akka:akka-stream_2.12:2.4.17 ()       (depends on 2.4.17)
[warn]
[warn] Run 'evicted' to see detailed eviction warnings

#3202 by @eed3si9n

Improvements and bug fixes to the startup messages

sbt writes out the sbt.version in project/build.properties if 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 running sbt compile from the terminal repreatedly. 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 supressed with suppressSbtShellNotification := true.

#3091/#3097/#3147 by @dwijnand