sbt/notes/0.13.16.markdown

3.5 KiB

Fixes with compatibility implications

  • Removes the "hit [ENTER] to switch to interactive mode" feature. See below.

Improvements

  • Improves the new startup messages. See below.
  • Ports sbt-cross-building's ^ and ^^ commands for plugin cross building. See below.

Bug fixes

  • Fixes the new startup messages. See below.
  • Fixes ScalaTest nested suite test names being reported as "(It is not a test)". #3154 by @jameskoch

Improvements and bug fixes to the new startup messages

The two new startup messages introduced in sbt 0.13.15 are:

  • when writing out sbt.version, for build reproducability, and
  • when informing the user about sbt's shell, for the performance improvement

When writing out sbt.version the messaging now:

  • correctly uses a logger rather than println
  • honours the log level set, for instance by --error
  • never executes when sbt "new" is being run

When informing the user about sbt's shell the messaging now:

  • is a 1 line message, rather than 3
  • is at info level, rather than warn level
  • can be suppressed with suppressSbtShellNotification := true
  • only triggers when compile is being run
  • never shows when sbt new is being run

#3091/#3097/#3147 by @dwijnand

Remove the "hit [ENTER] to switch to interactive mode" feature

In sbt 0.13.15, in addition to notifying the user about the existence of sbt's shell, a feature was added to allow the user to switch to sbt's shell - a more pro-active approach to just displaying a message.

Unfortunately sbt is often unintentionally invoked in shell scripts in "interactive mode" when no interaction is expected by, for example, invoking sbt package instead of sbt package < /dev/null. In that case hitting

ENTER

unhappy with the implementation as it created a tight coupling between sbt's command processing abstraction to sbt's shell command.

If you want to stay in sbt's shell after running a task like package then invoke sbt like so:

sbt package shell

#3091/#3153 by @dwijnand

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

Your plugin will now build with sbt 1.0.0-M5 (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.0-M5, 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-M5")

Then, run:

^ compile

#3133 by @eed3si9n