sbt/src/sphinx/Detailed-Topics/Global-Settings.rst

56 lines
1.6 KiB
ReStructuredText

===============
Global Settings
===============
Basic global configuration file
-------------------------------
Settings that should be applied to all projects can go in
``~/.sbt/global.sbt`` (or any file in ``~/.sbt/`` with a ``.sbt``
extension). Plugins that are defined globally in ``~/.sbt/plugins`` are
available to these settings. For example, to change the default
``shellPrompt`` for your projects:
``~/.sbt/global.sbt``
::
shellPrompt := { state =>
"sbt (%s)> ".format(Project.extract(state).currentProject.id)
}
Global Settings using a Global Plugin
-------------------------------------
The ``~/.sbt/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/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/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/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/plugins`` can
be used to try out ideas for plugins such as shown in the shellPrompt
example.