SBT
An overview of the plugins we use and what they do (they are defined in plugins.sbt
).
sbt-buildinfo
Configured in version.sbt
.
Auto-generates classes containing the major/minor version number plus the current Git SHA and makes it available in the code.
sbt-scoverage
Run the following to get an idea of test coverage.
sbt clean coverage test coverageReport
Check out the generated report under target/scala-2.12/scoverage-report
. Remember good coverage doesn’t always mean good tests!
sbt-assembly
Configured in assembly.sbt
.
The Assembly plugin will generate a “fat” jar. Run:
sbt assembly
…to create (for example) target/
.
sbt-native-packager
Configured in package.sbt
.
The Native Packager plugin will take the output of the Assembly plugin and package it up as a deployment artifact. In our case, this takes the form of a Debian package (.deb
) that can be installed via dpkg
and apt-get
on the Raspberry Pi.
To prepare a package, run the following:
sbt debian:packageBin
To perform a traditional “release”, see the Release section.
sbt-proguard
Configured in proguard.sbt
.
We use the Proguard plugin purely to reduce the file size of the deployment artifact. It reduces the ~50MB artifact to around 10MB, which is pretty cool.
sbt-microsite
Configured in site.sbt
.
Run sbt site/makeMicrosite
to create the site you’re reading now. Find it in site/target/jekyll
once built.
You should be able to preview the site using Jekyll to serve it.
$ cd site/target/jekyll
$ jekyll serve
If you’re going to publish it (sbt site/publishMicrosite
), make sure you site/makeMicrosite
first (otherwise you’ll see a commit on the gh-pages
branch with 0 commits
)
See the Microsite microsite.