sbt 1.2.4 patch release and nightly builds

By Eugene Yokota (@eed3si9n) October 8, 2018

Hi everyone. sbt 1.2.4 patch release is available.

How to upgrade

Change project/build.properties as follows:

sbt.version=1.2.4

The sbt launcher will automatically resolve the sbt JARs based on what’s in project/build.properties.

However, if you want to resolve them faster, you should use the installers. zip, tgz, and msi installers contain all the JAR files so the resolution completes from the preloaded-local repository.

Note: Please run clean after updating since sbt 1.2.4 includes a fix in the incremental compiler.

Bug fixes

  • Publishes JUnit reports using a compliant file name. #4343 by @ignasi35 at Lightbend
  • Fixes Zinc to detect changes in private trait definitions. zinc#599 by @jvican at Scala Center
  • Fixes IO.relativize’s handling of symbolic links. io#184 by @eed3si9n at Lightbend

Enhancement

IO.classLocation[A: Manifest]: URL

On JDK 11 onwards the class location from a Java Module returns a jrt URL, for example jrt:/java.base, which cannot convert to java.io.File, but can be represented as an NIO Path.

To work around this, sbt 1.2.4:

  • deprecates IO.classLocationFile[A: Manifest]: File
  • brings back IO.classLocation[A: Manifest]: URL
  • adds IO.classLocationPath[A: Manifest]: java.nio.file.Path and IO.classLocationFileOption[A: Manifest]: Option[File].

All of them return the directory, Java module, or the JAR containing the class file for type A (as determined by an implicit Manifest).

io#190 by @eed3si9n

Try nightly builds

To improve the contribution experience to sbt and Zinc, and also to allow for better testing sbt team has been working on making nightly releases using Dbuild. The existing sbt launcher can already resolve artifacts out of sbt repo maven-snapshots, so we are now pointing the URL to the nightlies.

To find out the latest nightly build, go to sbt repo maven-snapshots and find the latest entry, or run the following shell script:

curl -s https://jenkins.scala-sbt.org/sbt-snapshots/org/scala-sbt/sbt/ | grep "<td>" | tail -n 1 | sed -e 's/<[^>]*>//g' -e 's/\/.*//' | read SBT_NIGHTLY && echo $SBT_NIGHTLY

This should output as follows:

1.3.0-bin-20181008T192044

To use that you can pass -Dsbt.version=... from the commandline as follows:

sbt -Dsbt.version=1.3.0-bin-20181008T192044
sbt -Dsbt.version=$SBT_NIGHTLY

Note that it’s going to hit the Jenkins server instead of Maven Central so it might take a minute or two to resolve sbt JARs.

Participation

sbt 1.2.4 was brought to you by 7 contributors. Eugene Yokota, Jorge Vicente Cantero (jvican), Chris Birchall, Adam Kasztenny, Dima Kotobotov, Flash Sheridan, Ignasi Marimon-Clos. Thank you!

Thanks to everyone who’s helped improve sbt and Zinc 1 by using them, reporting bugs, improving our documentation, porting builds, porting plugins, and submitting and reviewing pull requests.

For anyone interested in helping sbt, there are many avenues for you to help, depending on your interest.

If you’re interested, Contributing, “help wanted”, “good first issue” are good starting points. If you have ideas, come talk to us on sbt-contrib or on Lightbend Discuss.