Global Settings 

Basic global configuration file 

Settings that should be applied to all projects can go in ~/.sbt/1.0.0-M4/global.sbt (or any file in ~/.sbt/1.0.0-M4 with a .sbt extension). Plugins that are defined globally in ~/.sbt/1.0.0-M4/plugins/ are available to these settings. For example, to change the default shellPrompt for your projects:

~/.sbt/1.0.0-M4/global.sbt

shellPrompt := { state =>
  "sbt (%s)> ".format(Project.extract(state).currentProject.id)
}

You can also configure plugins globally added in ~/.sbt/1.0.0-M4/plugins/build.sbt (see next paragraph) in that file, but you need to use fully qualified names for their properties. For example, for sbt-eclipse property withSource documented in https://github.com/typesafehub/sbteclipse/wiki/Using-sbteclipse, you need to use:

com.typesafe.sbteclipse.core.EclipsePlugin.EclipseKeys.withSource := true

Global Settings using a Global Plugin 

The ~/.sbt/1.0.0-M4/plugins/ directory is a global plugin project. This can be used to provide global commands, plugins, or other code.

To add a plugin globally, create ~/.sbt/1.0.0-M4/plugins/build.sbt containing the dependency definitions. For example:

addSbtPlugin("org.example" % "plugin" % "1.0")

To change the default shellPrompt for every project using this approach, create a local plugin ~/.sbt/1.0.0-M4/plugins/ShellPrompt.scala:

import sbt._
import Keys._

object ShellPrompt extends Plugin {
  override def settings = Seq(
    shellPrompt := { state =>
      "sbt (%s)> ".format(Project.extract(state).currentProject.id) }
  )
}

The ~/.sbt/1.0.0-M4/plugins/ directory is a full project that is included as an external dependency of every plugin project. In practice, settings and code defined here effectively work as if they were defined in a project’s project/ directory. This means that ~/.sbt/1.0.0-M4/plugins/ can be used to try out ideas for plugins such as shown in the shellPrompt example.

Contents

sbt Reference Manual
      1. Global Settings