Community Plugins

The GitHub sbt Organization

The sbt organization is available for use by any sbt plugin. Developers who contribute their plugins into the community organization will still retain control over their repository and its access. The goal of the sbt organization is to organize sbt software into one central location.

A side benefit to using the sbt organization for projects is that you can use gh-pages to host websites under the https://www.scala-sbt.org domain.

The sbt autoplugin giter8 template is a good place to start. This sets up a new sbt plugin project appropriately. The generated README includes a summary of the steps for publishing a new community plugin.

Plugins available for sbt 2.x

[Edit] this page to submit a pull request that adds your plugin to the list.

Code formatter plugins

One jar plugins

Release plugins

IDE integration plugins

  • sbt-structure: extract project structure in XML for IntelliJ Scala plugin.
  • Metals: Scala language server.

Test plugins

Library dependency plugins

Code generator plugins

  • sbt-avro: Apache Avro schema and protocol generator.
  • sbt-aspectj: AspectJ weaving for sbt.
  • sbt-protoc: protobuf code generator using protoc.
  • sbt-antlr4: run ANTLR v4 from sbt.
  • sbt-sql: generate model classes from SQL.
  • sbt-i18n: transform your i18n bundles into Scala code.
  • sbt-lit: build literate code with sbt.
  • sbt-embedded-files: generate Scala objects containing the contents of glob-specified files as strings or byte-arrays.
### Verification plugins

Language support plugins

  • sbt-scala-ts: generate TypeScript code according compiled Scala types (case class, trait, object, ...).
  • sbt-frege: build Frege code with sbt.
  • sbt-cc: compile C and C++ source files with sbt.

Web and frontend development plugins

Database plugins

Static code analysis plugins

Utility and system plugins

  • MiMa: binary compatibility management for Scala libraries.
  • sbt-git: run git commands from sbt.
  • sbt-dotenv: load environment variables from .env into the JVM System Environment for local development.
  • sbt-dynver: set project version dynamically from git metadata.
  • sbt-javaagent: add Java agents to projects.
  • sbt-nocomma: reduce commas.
  • sbt-jshell: Java REPL for sbt.
  • sbt-config: configures subproject via HOCON.
  • sbt-vimquit: adds :q command.
- [sbt-revolver](https://github.com/spray/sbt-revolver): auto-restart forked JVMs on update. - [sbt-conscript](https://github.com/foundweekends/conscript) ([docs](https://www.foundweekends.org/conscript/)): distribute apps using GitHub and Maven Central. - [sbt-errors-summary](https://github.com/Duhemm/sbt-errors-summary): show a summary of compilation errors. - [sbt-groll](https://github.com/sbt/sbt-groll): navigate git history inside sbt. - [sbt-prompt](https://github.com/agemooij/sbt-prompt): add promptlets and themes to your sbt prompt. - [sbt-crossproject](https://github.com/portable-scala/sbt-crossproject): cross-build Scala, Scala.js and Scala Native. - [sbt-proguard](https://github.com/sbt/sbt-proguard): run ProGuard on compiled sources. - [sbt-jni](https://github.com/sbt/sbt-jni): helpers for working with projects that use JNI. - [sbt-jol](https://github.com/ktoso/sbt-jol): inspect OpenJDK Java Object Layout from sbt. - [sbt-musical](https://github.com/tototoshi/sbt-musical): control iTunes from sbt (Mac only). - [horder](https://github.com/romanowski/hoarder): cache compilation artefacts for future builds. - [sbt-check](https://github.com/jeffreyolchovy/sbt-check): compile up to, and including, the typer phase. - [sbt-mima-version-check](https://github.com/ChristopherDavenport/sbt-mima-version-check): Automate which Mima Versions to Check - [sbt-tmpfs](https://github.com/cuzfrog/sbt-tmpfs): utilize tmpfs to speed up builds. - [sbt-sh](https://github.com/melezov/sbt-sh): run shell commands from sbt. - [sbt-ammonite-classpath](https://github.com/ThoughtWorksInc/sbt-ammonite-classpath): export classpath for [Ammonite](https://ammonite.io/) and [Almond](https://almond.sh/). - [sbt-version-scheme-enforcer-plugin](https://github.com/isomarcte/sbt-version-scheme-enforcer): Derive Mima settings for your library from your declared `versionScheme`. This supports Early SemVer, Strict SemVer, and Package Versioning Policy (PVP).

Documentation plugins

  • mdoc: typechecked markdown documentation for Scala
  • sbt-unidoc: create unified API documentation across subprojects.
  • sbt-class-diagram: generate class diagrams from Scala source code.
  • sbt-plantuml: generate PlantUML diagram.
  • tut: documentation and tutorial generator.
  • Laika: Transform Markdown or reStructuredText into HTML or PDF with Templating.
  • sbt-site: site generator.
  • sbt-microsites: generate and publish microsites using Jekyll.
  • sbt-ghpages: publish generated sites to GitHub pages.
  • sbt-api-mappings: generate Scaladoc apiMappings for common Scala libraries.
  • literator: generate literate-style markdown docs from your sources.
  • sbt-example: generate ScalaTest test suites from examples in Scaladoc.
  • sbt-delombok: delombok Java sources files that contain Lombok annotations to make Javadoc contain Lombok-generated classes and methods.
  • sbt-alldocs: collect all the docs for a project and dependencies into a single folder.
  • sbt-apidoc: A port of apidocjs to sbt, to document REST Api.
  • sbt-github-pages (docs): publish a website to GitHub Pages with minimal effort - works well with GitHub Actions.
  • sbt-docusaur (docs): build a website using Docusaurus and publish to GitHub Pages with minimal effort - works well with GitHub Actions.
  • sbt-hl-compiler: compile the code snippets from documentation (to keep it consistent).
  • sbt-scaladoc-compiler: compile the code snippets included in Scaladoc comments.

Code coverage plugins

### Create new project plugins
  • sbt-fresh: create an opinionated fresh sbt project.

Deployment integration plugins

  • sbt-riotctl: deploy applications as systemd services directly to a Raspberry Pi, ensuring dependencies (e.g. wiringpi) are met.
  • sbt-kind: load built docker images into a kind cluster.

Framework-specific plugins

  • sbt-newrelic: NewRelic support for artefacts built with sbt-native-packager.
  • sbt-spark: Spark application configurator.
  • sbt-api-builder: support for ApiBuilder from within sbt's shell.