This page is a relatively complete list of command line options, commands, and tasks you can use from the sbt interactive prompt or in batch mode. See Running in the Getting Started Guide for an intro to the basics, while this page has a lot more detail.
toString
representation of
these values can be shown using show <task>
to run the task
instead of just <task>
.
clean
Deletes all generated files (the target
directory).
publishLocal
Publishes artifacts (such as jars) to the local Ivy
repository as described in Publishing.
publish
Publishes artifacts (such as jars) to the repository
defined by the publishTo setting, described in Publishing.
update
Resolves and retrieves external dependencies as described
in library dependencies.
Configuration-level tasks are tasks associated with a configuration. For
example, compile
, which is equivalent to Compile/compile
, compiles
the main source code (the compile
configuration). Test/compile
compiles the test source code (test test
configuration). Most tasks
for the compile
configuration have an equivalent in the test
configuration that can be run using a Test/
prefix.
compile
Compiles the main sources (in the src/main/scala
directory). Test/compile
compiles test sources (in the
src/test/scala/ directory).
console
Starts the Scala interpreter with a classpath including
the compiled sources, all jars in the lib directory, and managed
libraries. To return to sbt, type :quit, Ctrl+D (Unix), or Ctrl+Z
(Windows). Similarly, Test/console starts the interpreter with the
test classes and classpath.
consoleQuick
Starts the Scala interpreter with the project’s
compile-time dependencies on the classpath. Test/consoleQuick uses
the test dependencies. This task differs from console in that it
does not force compilation of the current project’s sources.
consoleProject
Enters an interactive session with sbt and the
build definition on the classpath. The build definition and related
values are bound to variables and common packages and values are
imported. See the consoleProject documentation
for more information.
doc
Generates API documentation for Scala source files in
src/main/scala
using scaladoc. Test/doc
generates API documentation
for source files in src/test/scala
.
package
Creates a jar file containing the files in
src/main/resources
and the classes compiled from src/main/scala
.
Test/package
creates a jar containing the files in
src/test/resources
and the class compiled from src/test/scala
.
packageDoc
Creates a jar file containing API documentation
generated from Scala source files in src/main/scala. Test/packageDoc
creates a jar containing API documentation for test sources files in
src/test/scala.
packageSrc
: Creates a jar file containing all main source files
and resources. The packaged paths are relative to src/main/scala and
src/main/resources. Similarly, Test/packageSrc operates on test
source files and resources.
run <argument>*
Runs the main class for the project in the same
virtual machine as sbt. The main class is passed the arguments
provided. Please see
Running Project Code for details on the use of
System.exit and multithreading (including GUIs) in code run by this
action. Test/run
runs a main class in the test code.
runMain <main-class> <argument>*
Runs the specified main class for
the project in the same virtual machine as sbt. The main class is
passed the arguments provided. Please see
Running Project Code for
details on the use of System.exit and multithreading (including
GUIs) in code run by this action. Test/runMain
runs the specified
main class in the test code.
test
Runs all tests detected during test compilation. See Testing
for details.
testOnly <test>*
Runs the tests provided as arguments. *
(will
be) interpreted as a wildcard in the test name. See Testing for
details.
testQuick <test>*
Runs the tests specified as arguments (or all
tests if no arguments are given) that:
*
(will be) interpreted as a wildcard in the
test name. See [Testing][Testing] for details.
exit
or quit
End the current interactive session or build.
Additionally, Ctrl+D (Unix) or Ctrl+Z (Windows) will exit the
interactive prompt.
help <command>
Displays detailed help for the specified command.
If the command does not exist, help lists detailed help for commands
whose name or description match the argument, which is interpreted
as a regular expression. If no command is provided, displays brief
descriptions of the main commands. Related commands are tasks and
settings.
projects [add|remove <URI>]
List all available projects if no
arguments provided or adds/removes the build at the provided URI.
(See multi-project builds for details on multi-project
builds.)
project <project-id>
Change the current project to the project
with ID <project-id>
. Further operations will be done in the
context of the given project. (See multi-project builds for
details on multiple project builds.)
~ <command>
Executes the project specified action or method
whenever source files change. See
Triggered Execution for details.
< filename
Executes the commands in the given file. Each command
should be on its own line. Empty lines and lines beginning with ’#’
are ignored
+ <command>
Executes the project specified action or method for
all versions of Scala defined in the crossScalaVersions setting.
++ <version|home-directory> <command>
Temporarily changes the
version of Scala building the project and executes the provided
command. <command>
is optional. The specified version of Scala is
used until the project is reloaded, settings are modified (such as
by the set or session commands), or ++ is run again. <version>
does not need to be listed in the build definition, but it must be
available in a repository. Alternatively, specify the path to a
Scala installation.
; A ; B
Execute A and if it succeeds, run B. Note that the leading
semicolon is required.
eval <Scala-expression>
Evaluates the given Scala expression and
returns the result and inferred type. This can be used to set system
properties, as a calculator, to fork processes, etc … For example:
> eval System.setProperty("demo", "true")
> eval 1+1
> eval "ls -l" !
reload [plugins|return]
If no argument is specified, reloads the
build, recompiling any build or plugin definitions as necessary.
reload plugins changes the current project to the build definition
project (in project/
). This can be useful to directly manipulate the
build definition. For example, running clean on the build definition
project will force snapshots to be updated and the build definition
to be recompiled. reload return changes back to the main project.
set <setting-expression>
Evaluates and applies the given setting
definition. The setting applies until sbt is restarted, the build is
reloaded, or the setting is overridden by another set command or
removed by the session command. See
.sbt build definition and
Inspecting Settings for details.
session <command>
Manages session settings defined by the set
command. It can persist settings configured at the prompt. See
Inspecting Settings for details.
inspect <setting-key>
Displays information about settings, such as
the value, description, defining scope, dependencies, delegation
chain, and related settings. See
Inspecting Settings for details.
When launching the sbt
runner from the OS shell, various system properties
or JVM extra options can be specified to influence its behaviour.
If the JAVA_OPTS
and/or SBT_OPTS
environment variables are defined when
sbt
starts, their content is passed as command line arguments to the JVM
running sbt.
If a file named .jvmopts
exists in the current directory, its content
is appended to JAVA_OPTS
at sbt startup. Similarly, if .sbtopts
and/or /etc/sbt/sbtopts
exist, their content is appended to SBT_OPTS
.
The default value of JAVA_OPTS
is -Dfile.encoding=UTF8
.
You can also specify JVM system properties and command line options
directly as sbt
arguments: any -Dkey=val
argument will be passed
as-is to the JVM, and any -J-Xfoo
will be passed as -Xfoo
.
See also sbt --help
for more details.
If you find yourself running out of permgen space or your workstation is low on memory, adjust the JVM configuration as you would for any java application.
For example a common set of memory-related options is:
export SBT_OPTS="-Xmx2048M -Xss2M"
sbt
Or if you prefer to specify them just for this session:
sbt -J-Xmx2048M -J-Xss2M
sbt
is just a bootstrap, the actual meat of sbt, the Scala compiler
and standard library are by default downloaded to the shared directory
$HOME/.sbt/boot/
.
To change the location of this directory, set the sbt.boot.directory
system property. A relative path will be resolved
against the current working directory, which can be useful if you want
to avoid sharing the boot directory between projects. For example, the
following uses the pre-0.11 style of putting the boot directory in
project/boot/
:
sbt -Dsbt.boot.directory=project/boot/
The character encoding used by your terminal may differ from Java’s
default encoding for your platform. In this case, you will need to specify
the file.encoding=<encoding>
system property, which might look like:
export JAVA_OPTS="-Dfile.encoding=Cp1252"
sbt
On Unix, sbt will pick up any HTTP, HTTPS, or FTP proxy settings from
the standard http_proxy
, https_proxy
, and ftp_proxy
environment
variables. If you are behind a proxy requiring authentication, you
need to pass some supplementary flags at sbt startup. See
JVM networking system properties for more details.
For example:
sbt -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
On Windows, your script should set properties for proxy host, port, and if applicable, username and password. For example, for HTTP:
sbt -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
Replace http
with https
or ftp
in the above command line to
configure HTTPS or FTP.
The following system properties can also be passed to sbt
:
Property | Values | Default | Meaning |
---|---|---|---|
sbt.banner | Boolean | true (in 1.3+) | Show a welcome banner advertising new features. |
sbt.boot.directory | Directory | ~/.sbt/boot | Path to shared boot directory. You should define sbt.boot.directory explicitly if you are using sbt in a CI environment and want to cache sbt boot classes between runs. |
sbt.boot.properties | File | Roughly sbt.boot.properties internal to the sbt launcher and specific to the sbt version. | The path to find the sbt boot properties file. This can be a relative path, relative to the sbt base directory, the users home directory or the location of the sbt jar file, or it can be an absolute path or an absolute file URI. |
sbt.ci | Boolean | false (unless then env var BUILD_NUMBER is set) | For continuous integration environments. Suppress supershell and color. |
sbt.client | Boolean | false | |
sbt.color | String | auto | Supersedes sbt.log.format. To turn on color, use always or true. To turn off color, use never or false>. To use color if the output is a terminal (not a pipe) that supports color, use auto. |
sbt.coursier | Boolean | true (in 1.3+) | Use coursier to retrieve packages. (See also sbt.ivy.) |
sbt.coursier.home | Directory | CoursierDependencyResolution.defaultCacheLocation (in 1.3+) | Location of coursier artifact cache, where the default is defined by Coursier cache resolution logic. You can verify the value with the command `csrCacheDirectory`. You should define sbt.coursier.home explicitly if you are using coursier in a CI environment and want to cache artifacts between runs. |
sbt.extraClasspath | Classpath Entries | (jar files or directories) that are added to sbt's classpath. Note that the entries are delimited by comma, e.g.: entry1, entry2,... See also resource in the sbt launcher documentation. | |
sbt.genbuildprops | Boolean | true | Generate build.properties if missing. If unset, this defers to sbt.skip.version.write. |
sbt.global.base | Directory | $HOME/.sbt/1.0 | The directory containing global settings and plugins. |
xsbt.inc.debug | Boolean | false | Extra debugging for the incremental debugger. |
sbt.ivy | Boolean | true (in <1.3) | Use ivy to retrieve packages. |
sbt.ivy.home | Directory | ~/.ivy2 | The directory containing the local Ivy repository and artifact cache. You should define sbt.ivy.home explicitly if you are using sbt in a CI environment and want to cache ivy artifacts between runs. |
sbt.log.noformat | Boolean | false | If true, disable ANSI color codes. Useful on build servers or terminals that do not support color. |
sbt.main.class | String | sbt.xMain | The sbt class to use (alternatives include sbt.ConsoleMain and sbt.ScriptMain). |
sbt.offline | Boolean | false | Avoid retrieving classes from repositories. |
sbt.override.build.repos | Boolean | false | If true, repositories configured in a build definition are ignored and the repositories configured for the launcher are used instead. See sbt.repository.config and the sbt launcher documentation. |
sbt.progress | String | ? | Use always to show progress ("supershell"). |
sbt.repository.config | File | ~/.sbt/repositories | A file containing the repositories to use for the launcher. The format is the same as a [repositories] section for a sbt launcher configuration file. This setting is typically used in conjunction with setting sbt.override.build.repos to true (see sbt.override.build.repos and the sbt launcher documentation). |
sbt.resident.limit | Number | 0 | The number of scala compilers to keep around. This experimental feature was intended to improve compilation time. It does not appear to have succeeded and this flag will probably be removed. |
sbt.skip.version.write | Boolean | false | Generate build.properties if missing. See sbt.genbuildprops. |
sbt.supershell | Boolean | true if color is enabled | Use supershell (show progress at bottom of shell). |
sbt.supershell.sleep | Number | 100 | Time to wait between updating the supershell progress area. |
sbt.task.timings | Boolean | false | Measure the time elapsed for running tasks. |
sbt.task.timings.omit.paths | Boolean | false | Omit paths when reporting timings. |
sbt.task.timings.on.shutdown | Boolean | false | Report timings at JVM shutdown (instead of at task completion). |
sbt.task.timings.threshold | String | 0 | Omit items from timing report if they are below this threshold. |
sbt.traces | Boolean | false | Generate Chrome Trace Event Format log for tasks. |
sbt.turbo | Boolean | false | Use additional layered class loaders. |
sbt.version | Version | 1.9.8 | sbt version to use, usually taken from project/build.properties. |
sbt.watch.mode | String | auto | If polling, check file system periodically for updates. |