An opinionated plugin for github-based open-source projects.
sbt-knutwalker
is a meta-plugin for sbt to simplify project builds
with typical or recommended settings.
It's based on the way I like to build my projects and if you agree with
me there, you might benefit from this plugin, too.
As a meta-plugin, the following plugins are automatically included (alphabetical order)
-
sbt-assembly 0.14.6 Build fat-jars for your application
-
sbt-buildinfo 0.7.0 Generate code based on your
build.sbt
-
sbt-docker 1.4.1 Generate docker images for your application
-
sbt-ghpages 0.6.2 Push documentation and static content to github pages
-
sbt-git 0.9.3 Versioning based on git
-
sbt-header 4.1.0 For creating and maintaining license headers
-
sbt-jmh 0.3.3 Trust no one, bench everything
-
sbt-mima-plugin 0.1.18 Check for binary compability
-
sbt-pgp 1.1.0 For signing artifacts when publishing to sonatype
-
sbt-release 1.0.7 Provides a customizable workflow for releases
-
sbt-revolver 0.9.1 quickly restart your application
-
sbt-sonatype 2.1 Provides support for Sonatype
-
sbt-scoverage 1.5.1 For running statement and branch coverage
-
sbt-site 1.3.1 Generate static content for documentation (and github pages)
-
tut-plugin 0.6.2 Compile and check your documentation
-
sbt-unidoc 0.4.1 Generate unified documentation across multiple projects
Not all of these are configured (e.g. docker), they're just included so you don't
have to add them to the plugins.sbt
. Also, some of those are targeted at libraries
while others are targeted at applications. Future versions might make a distinction there.
Further, these things are provided or simplified
- simpler releasing to sonatype
- Apache License with automatic license header creation
- useful scalac flags
- more aggresive resolver caching to avoid repeated resolving...
Add the folling to you project/plugins.sbt
addSbtPlugin("de.knutwalker" % "sbt-knutwalker" % "0.5.1")
Add the folling to you project/plugins.sbt
addSbtPlugin("de.knutwalker" % "sbt-knutwalker" % "0.6.0")
The following keys should be used to activate various features and simplicifications
maintainer := "Me Dev"
Maintainer is used mainly for the license header as the licenser to use (Copyright YYYY $maintainer)
It is also used as the name for the developer in the generated pom for sonatype releasing
githubProject := de.knutwalker.sbt.Github("myorg", "awesome-project")
Setting githubProject
:
- sets the
organizationHomepage
to the github user site - sets the
homepage
to the github repository site - fills the scm-info in the generated pom for sonatype releasing
- sets the id and url for the developer in the generated pom for sonatype releasing
A list of developers that will be included in the generated pom for sonatype releasing. It also workarounds a bug in pom generation in sbt 0.13.8
javaVersion
controls the scalac flag target
, based on the used version
and the different target support for of different scala versions.
There are several other keys that are not yet implemented correctly or sufficently to be mentioned here.
The following is a minimal build.sbt
definition that includes
license headers and enables publishing to Sonatype nexus.
name := "aweseome-project"
maintainer := "Foo Bar"
scalaVersion := "2.11.8"
organization := "org.example"
githubProject := Github("example", "awesome-project")