sbt

Bloop’s compiler performance is ~29% faster than SBT (on at least one project) alvin March 20, 2019 - 8:42pm

I had read that Bloop was faster than Scala compiler tools like scalac and fsc, so I wondered if it was faster than SBT, and if so, how much faster. So I downloaded Eric Torreborre’s specs2 source code, which has 880 source code files, and compiled the entire project with both SBT and Bloop.

SBT performance

To test SBT’s speed, I ran all the commands from inside the SBT command prompt, which I usually do anyway to avoid the SBT/JVM startup lag time. I also ran clean and compile several times before recording SBT’s speed, because I thought that would be a better reflection of real-world usage and performance. I ran the tests four times, and the average time with SBT was 49 seconds, and that was very consistent, always coming in between 48 and 50 seconds.

Bloop performance

Using Jenkins with Scala, ScalaTest, SBT, and Git

I’ve used Jenkins before, but hadn’t used it in a while, so when I got it running with Scala, SBT, ScalaTest, and Git, I made some notes about how to configure it. You can get Jenkins going with Docker, but I just got Jenkins running by starting its WAR file like this:

java -jar jenkins.war

Jenkins with Scala, SBT, ScalaTest, and Git

My notes on getting everything up and running are a little cryptic, but if you have a little experience with Jenkins I hope they’ll make sense. Here they are:

Jenkins tutorials (Jenkins, Docker, Scala, SBT, Java, Maven, and Git) alvin February 19, 2019 - 5:37pm

As a brief note to self, these were the two best Jenkins tutorials I found in early 2019:

The first one shows how to run Jenkins with Docker, and the second one shows how to build a Java/Maven/Git project.

This tutorial on how to use Jenkins with Scala and SBT was also helpful:

ScalaCheck custom generator examples alvin February 8, 2019 - 5:48pm
Table of Contents1 - Custom generators2 - Built-in ScalaCheck generators3 - How to use ScalaCheck generators4 - More ScalaCheck generators

Writing custom generators for ScalaCheck can be one of the more difficult and/or time-consuming parts of using it. As a result I thought I’d start putting together a list of generators that I have written or seen elsewhere. Unfortunately I can’t credit all the ones I’ve seen in other places because I google’d and copied them many moons ago, but I’ll give credit/attribution to all the ones I can.

Back to top

Custom generators

This is a combination of generators I wrote, and some that I copied from other places and may have modified a little:

A complicated build.sbt file for a multi-project build alvin January 1, 2019 - 2:51pm

The project I linked to demonstrates a complicated SBT build.sbt file for a multi-project build.

SBT warning: Getting the hostname was slow alvin December 27, 2018 - 6:47pm

I just started using a new version of SBT, and when I went to run a test I got this SBT warning message:

How can I tell what version of SBT my project is using? alvin December 27, 2018 - 1:44pm

At the moment this is kind of funky, but I find that the best way to determine the version of SBT is to move to a temporary directory and then run the sbt sbtVersion command:

Scala SBT scalacOptions syntax/examples alvin December 25, 2018 - 5:34pm

As a quick note to self, here’s an example of how to set scalacOptions in an SBT build.sbt file:

scalacOptions ++= Seq(
    "-Xfatal-warnings",
    "-deprecation",
    "-feature",
    "-unchecked",
    "-language:implicitConversions",
    "-language:higherKinds",
    "-language:existentials",
    "-language:postfixOps"
)

As shown, scalacOptions lets you set Scala compiler options in your SBT project build.

Scala SBT: Keys object fields alvin December 22, 2018 - 6:23pm

If/when you need to know what keys are available in a Scala SBT build.sbt file, you can find them all listed in the Keys object. At the current moment, here’s the Scaladoc for the SBT Keys object.

Note that the first two SBT keys you’ll probably see are name and scalaVersion.

Scala: Popular tools, libraries, and frameworks alvin June 15, 2018 - 9:53am
Table of Contents1 - Build tools2 - Testing tools3 - Database4 - Functional Programming5 - Asynchronous/parallel/concurrent programming6 - Web frameworks7 - JSON8 - HTTP clients9 - Configuration/properties10 - Many more

This page is a collection of popular tools, libraries, and frameworks for the Scala programming language.

Back to top

Build tools