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.
[Edit] this page to submit a pull request that adds your plugin to the list.
Code formatter plugins
- sbt-scalafmt: code formatting using Scalafmt.
- sbt-java-formatter: code formatting for Java sources.
One jar plugins
- sbt-assembly: create über JARs.
Release plugins
- sbt-native-packager (docs): build native packages (RPM, .deb etc) for your projects.
- sbt-release: create a customizable release process.
- sbt-ci-release: automate Central Repo releases from GitHub Actions.
- sbt-native-image: generate GraalVM native-image binaries.
- sbt-pgp: sign artifacts using PGP/GPG and manage signing keys.
IDE integration plugins
- sbt-structure: extract project structure in XML for IntelliJ Scala plugin.
- Metals: Scala language server.
Test plugins
- sbt-jmh: run Java Microbenchmark Harness (JMH) benchmarks from sbt.
- sbt-stryker4s: Test your tests with mutation testing.
- junit-interface: test interface for JUnit 4.
- sbt-doctest: generate and run tests from Scaladoc comments.
- snapshot4s: snapshot testing
- sbt-jupiter-interface: test interface for JUnit 5.
- test-times-reporter: report slow tests.
Library dependency plugins
- sbt-license-report: generate reports of licenses used by dependencies.
- sbt-dependency-submission: Dependency Submission API integration.
- sbt-conflict-classes: show conflict classes in the classpath.
- sbt-akka-version-check: detect Akka module mismatches and fail build.
- sbt-license-check: check and report on licenses used, fail build for disallowed licenses.
- sbt-pekko-version-check: check if the Apache Pekko modules match.
- sbt-jackson-version-check: check if the Jackson modules match.
- sbt-dependency-rules: enforce user-defined rules on project dependencies.
Code generator plugins
- sbt-buildinfo: generate Scala code from sbt setting keys.
- smithy4s: Smithy for Scala
- sbt-scalaxb: generate model classes from XML schemas and WSDL.
- avrohugger: generate case classes from Avro schemas.
- sbt-github-actions: generate GitHub Actions YAML
- sbt-header: auto-generate source code file headers (such as copyright notices).
- sbt-protobuf: protobuf code generator.
- sbt-boilerplate: TupleX and FunctionX boilerplate code generator.
- sbt-contraband (docs): generate pseudo-case classes from GraphQL schemas.
- sbt-openapi-generator: OpenAPI generator.
- sbt-teavm: generate JavaScript and WebAssembly from Java bytecode
Language support plugins
- sbt-redacted: redacted compiler plugin.
Web and frontend development plugins
- sbt-war: package and run WAR files
- sbt-web: library for building sbt plugins for the web.
- sbt-js-engine: support for sbt plugins that use JavaScript.
- sbt-less: Less CSS compilation support.
- sbt-coffeescript: CoffeeScript support.
Database plugins
- flyway-sbt Flyway database migration.
- sbt-dao-generator generate code for O/R Mapper Free
- sbt-sliquibase: generate code for Slick API types from a Liquibase changelog.
Static code analysis plugins
- wartremover: flexible Scala linting tool.
- sbt-scalafix: refactoring and linting tool for Scala using Scalafix.
- sbt-warning-diff: show added/removed warnings.
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
:qcommand.
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.
Code coverage plugins
- sbt-scoverage: Scala code coverage using Scoverage.
- sbt-jacoco: Scala and Java code coverage using JaCoCo.