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-pack: create runnable distributions for your projects.
- sbt-native-image: generate GraalVM native-image binaries.
- sbt-pgp: sign artifacts using PGP/GPG and manage signing keys.
- sbt-osgi: create OSGi bundles.
- sbt-salad-days: reduce Scaladoc JAR file size.
IDE integration plugins
- Metals: Scala language server.
- sbt-structure: extract project structure in XML for IntelliJ Scala plugin.
- sbt-eclipse: create Eclipse project definition.
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.
- sbt-scalaprops: scalaprops property-based testing integration.
- test-times-reporter: report slow tests.
- sbt-cached-ci: Incremental sbt builds for CI environments.
Library dependency plugins
- sbt-updates: list updated versions of dependencies.
- sbt-license-report: generate reports of licenses used by dependencies.
- sbt-gcs-resolver: for Google Cloud Storage (GCS) and Google Artifact Registry with Coursier support.
- sbt-dependency-check: check dependencies for known vulnerabilities/CVEs.
- 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-protoc: protobuf code generator using protoc.
- sbt-teavm: generate JavaScript and WebAssembly from Java bytecode
Language support plugins
- Scala Native: Scala compiler targeting native
- SN Bindgen: generate Scala Native bindings.
- sbt-redacted: redacted compiler plugin.
Web and frontend development plugins
- Play Framework: reactive web framework for Scala and Java.
- Scala.js: Scala to JavaScript compiler.
- 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-rjs: RequireJs optimizer.
- sbt-less: Less CSS compilation support.
- sbt-digest: generate checksums of assets.
- sbt-gzip: gzip compressor for assets.
- sbt-coffeescript: CoffeeScript support.
- sbt-stylus: Stylus stylesheet compiler.
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-conscript (docs): distribute apps using GitHub and Maven Central.
- sbt-tpolecat: scalac options for the enlightened
- 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.
- unused-code: remove unused Scala code.
- 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-api-mappings:
generate Scaladoc
apiMappingsfor common Scala libraries. - sbt-plantuml: generate PlantUML diagram.
Code coverage plugins
- sbt-scoverage: Scala code coverage using Scoverage.
- sbt-jacoco: Scala and Java code coverage using JaCoCo.