本页列出了您可以在 sbt 交互式提示符中或在批处理模式下使用的命令行选项、命令和任务的完整列表。有关基本知识的介绍,请参见入门指南中的运行,而本页则提供了更多详细信息。
toString
表示可以通过show <task>
来显示,以运行任务,而不仅仅是<task>
。clean
删除所有生成的文件(target
目录)。publishLocal
将工件(例如 jar)发布到本地 Ivy 仓库,如发布中所述。publish
将工件(例如 jar)发布到由 publishTo 设置定义的仓库中,如发布中所述。update
解析并检索外部依赖项,如库依赖项中所述。配置级任务是与配置关联的任务。例如,compile
(等效于Compile/compile
)会编译主源代码(compile
配置)。Test/compile
会编译测试源代码(test
配置)。compile
配置中的大多数任务在test
配置中都有等效项,可以使用Test/
前缀来运行这些等效项。
compile
编译主源代码(在src/main/scala
目录中)。Test/compile
编译测试源代码(在src/test/scala/
目录中)。console
启动 Scala 解释器,其类路径包含已编译的源代码、lib 目录中的所有 jar 和托管库。要返回到 sbt,请键入:quit、Ctrl+D(Unix)或 Ctrl+Z(Windows)。类似地,Test/console 会启动包含测试类和类路径的解释器。consoleQuick
启动 Scala 解释器,其类路径包含项目的编译时依赖项。Test/consoleQuick 使用测试依赖项。此任务与 console 不同,因为它不会强制编译当前项目的源代码。consoleProject
使用 sbt 和构建定义在类路径上进入交互式会话。构建定义和相关值绑定到变量,并且导入常见的包和值。有关更多信息,请参见consoleProject 文档。doc
使用 scaladoc 为src/main/scala
中的 Scala 源文件生成 API 文档。Test/doc
为src/test/scala
中的源文件生成 API 文档。package
创建一个 jar 文件,其中包含src/main/resources
中的文件和从src/main/scala
编译的类。Test/package
创建一个包含src/test/resources
中的文件和从src/test/scala
编译的类的 jar 文件。packageDoc
创建一个包含从src/main/scala
中的 Scala 源文件生成的 API 文档的 jar 文件。Test/packageDoc 创建一个包含测试源文件src/test/scala
中 API 文档的 jar 文件。packageSrc
:创建一个包含所有主源文件和资源的 jar 文件。打包的路径相对于src/main/scala
和src/main/resources
。类似地,Test/packageSrc 对测试源文件和资源进行操作。run <argument>*
在与 sbt 相同的虚拟机中运行项目的 main 类。main 类将传递提供的参数。有关此操作运行的代码中使用 System.exit 和多线程(包括 GUI)的详细信息,请参见运行项目代码。Test/run
会运行测试代码中的 main 类。runMain <main-class> <argument>*
在与 sbt 相同的虚拟机中运行项目中指定的 main 类。main 类将传递提供的参数。有关此操作运行的代码中使用 System.exit 和多线程(包括 GUI)的详细信息,请参见运行项目代码。Test/runMain
会运行测试代码中指定的 main 类。test
运行测试编译期间检测到的所有测试。有关详细信息,请参见测试。testOnly <test>*
运行作为参数提供的测试。*
(将)解释为测试名称中的通配符。有关详细信息,请参见测试。testQuick <test>*
运行作为参数指定的测试(如果未提供参数,则运行所有测试),这些测试
*
(将)解释为测试名称中的通配符。有关详细信息,请参见[测试][Testing]。exit
或 quit
结束当前交互式会话或构建。此外,Ctrl+D(Unix)或 Ctrl+Z(Windows)将退出交互式提示符。help <command>
显示指定命令的详细帮助。如果命令不存在,help 将列出与参数匹配的命令的详细帮助,参数解释为正则表达式。如果未提供命令,则显示主要命令的简要说明。相关命令是任务和设置。projects [add|remove <URI>]
如果未提供任何参数,则列出所有可用项目,或者添加/删除提供的 URI 处的构建。有关多项目构建的详细信息,请参见多项目构建。project <project-id>
将当前项目更改为 ID 为<project-id>
的项目。进一步的操作将在给定项目的上下文中执行。有关多项目构建的详细信息,请参见多项目构建。~ <command>
每当源文件更改时,执行项目指定的动作或方法。有关详细信息,请参见触发执行。< filename
执行给定文件中的命令。每个命令都应该在它自己的行上。空行和以 ’#’ 开头的行将被忽略+ <command>
为 crossScalaVersions 设置中定义的所有 Scala 版本执行项目指定的动作或方法。++ <version|home-directory> <command>
暂时更改构建项目的 Scala 版本,并执行提供的命令。<command>
是可选的。指定的 Scala 版本将一直使用,直到项目重新加载、设置被修改(例如,通过 set 或 session 命令)或再次运行 ++。<version>
不需要列在构建定义中,但它必须在仓库中可用。或者,指定 Scala 安装的路径。; A ; B
执行 A,如果成功,则运行 B。请注意,需要在开头添加分号。eval <Scala-expression>
评估给定的 Scala 表达式并返回结果和推断类型。这可以用于设置系统属性、用作计算器、分叉进程等等。例如
> eval System.setProperty("demo", "true")
> eval 1+1
> eval "ls -l" !
reload [plugins|return]
如果没有指定参数,则重新加载构建,必要时重新编译任何构建或插件定义。reload plugins 将当前项目更改为构建定义项目(在 project/
中)。这对于直接操作构建定义非常有用。例如,在构建定义项目上运行 clean 将强制更新快照并重新编译构建定义。reload return 更改回主项目。set <setting-expression>
评估并应用给定的设置定义。该设置将应用,直到 sbt 重新启动、构建重新加载或该设置被另一个 set 命令覆盖或被 session 命令删除。有关详细信息,请参阅 .sbt 构建定义 和 检查设置。session <command>
管理由 set
命令定义的会话设置。它可以持久化在提示符处配置的设置。有关详细信息,请参阅 检查设置。inspect <setting-key>
显示有关设置的信息,例如值、描述、定义范围、依赖项、委托链和相关设置。有关详细信息,请参阅 检查设置。从 OS shell 启动 sbt
运行器时,可以指定各种系统属性或 JVM 附加选项来影响其行为。
如果在 sbt
启动时定义了 JAVA_OPTS
和/或 SBT_OPTS
环境变量,则其内容将作为命令行参数传递给运行 sbt 的 JVM。
如果在当前目录中存在名为 .jvmopts
的文件,则其内容将在 sbt 启动时追加到 JAVA_OPTS
。类似地,如果 .sbtopts
和/或 /etc/sbt/sbtopts
存在,则其内容将追加到 SBT_OPTS
。JAVA_OPTS
的默认值为 -Dfile.encoding=UTF8
。
您还可以直接将 JVM 系统属性和命令行选项指定为 sbt
参数:任何 -Dkey=val
参数都将按原样传递给 JVM,任何 -J-Xfoo
都将作为 -Xfoo
传递。
另请参阅 sbt --help
以获取更多详细信息。
如果您发现自己运行时 permgen 空间不足或工作站内存不足,请根据任何 java 应用程序调整 JVM 配置。
例如,一组常见的与内存相关的选项是
export SBT_OPTS="-Xmx2048M -Xss2M"
sbt
或者,如果您希望只为本次会话指定它们
sbt -J-Xmx2048M -J-Xss2M
sbt
只是一个引导程序,sbt 的实际内容,Scala 编译器和标准库默认情况下会下载到共享目录 $HOME/.sbt/boot/
。
要更改此目录的位置,请设置 sbt.boot.directory
系统属性。相对路径将相对于当前工作目录解析,如果您想避免在项目之间共享启动目录,这可能很有用。例如,以下使用 0.11 之前的风格将启动目录放在 project/boot/
中
sbt -Dsbt.boot.directory=project/boot/
终端使用的字符编码可能与您平台的 Java 默认编码不同。在这种情况下,您需要指定 file.encoding=<encoding>
系统属性,这可能看起来像
export JAVA_OPTS="-Dfile.encoding=Cp1252"
sbt
在 Unix 上,sbt 将从标准 http_proxy
、https_proxy
和 ftp_proxy
环境变量中获取任何 HTTP、HTTPS 或 FTP 代理设置。如果您位于需要身份验证的代理后面,则需要在 sbt 启动时传递一些补充标志。有关更多详细信息,请参阅 JVM 网络系统属性。
例如
sbt -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
在 Windows 上,您的脚本应设置代理主机、端口以及可选的用户名和密码的属性。例如,对于 HTTP
sbt -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
在上面的命令行中将 http
替换为 https
或 ftp
以配置 HTTPS 或 FTP。
以下系统属性也可以传递给 sbt
属性 | 值 | 默认值 | 含义 |
---|---|---|---|
sbt.banner | 布尔值 | true(在 1.3+ 中) | 显示一个欢迎横幅,宣传新功能。 |
sbt.boot.directory | 目录 | ~/.sbt/boot | 共享启动目录的路径。如果您在 CI 环境中使用 sbt 并且希望在运行之间缓存 sbt 启动类,则应明确定义sbt.boot.directory。 |
sbt.boot.properties | 文件 | 大致sbt.boot.propertiessbt 启动器内部,特定于 sbt 版本。 | 查找 sbt 启动属性 文件的路径。这可以是相对路径,相对于 sbt 基目录、用户主目录或 sbt jar 文件的位置,也可以是绝对路径或绝对文件 URI。 |
sbt.ci | 布尔值 | false(除非然后 env varBUILD_NUMBER已设置) | 用于持续集成环境。抑制超级外壳和颜色。 |
sbt.client | 布尔值 | false | |
sbt.color | 字符串 | auto | 取代sbt.log.format。要打开颜色,请使用always或true。要关闭颜色,请使用never或false>。如果输出是支持颜色的终端(而不是管道),则使用颜色,请使用auto. |
sbt.coursier | 布尔值 | true(在 1.3+ 中) | 使用 coursier 来检索包。(另请参阅sbt.ivy.) |
sbt.coursier.home | 目录 | CoursierDependencyResolution.defaultCacheLocation(在 1.3+ 中) | coursier 工件缓存的位置,其中默认值由 Coursier 缓存解析逻辑 定义。您可以使用命令 `csrCacheDirectory` 验证该值。如果您在 CI 环境中使用 coursier 并且希望在运行之间缓存工件,则应明确定义sbt.coursier.home。 |
sbt.extraClasspath | 类路径条目 | (jar 文件或目录) 添加到 sbt 的类路径。请注意,这些条目由逗号分隔,例如entry1, entry2,..。另请参阅resource在 sbt 启动器 文档中。 | |
sbt.genbuildprops | 布尔值 | true | 生成build.properties如果缺少。如果未设置,则将委派给sbt.skip.version.write. |
sbt.global.base | 目录 | $HOME/.sbt/1.0 | 包含全局设置和插件的目录。 |
xsbt.inc.debug | 布尔值 | false | 增量调试器的额外调试。 |
sbt.ivy | 布尔值 | true(在 <1.3 中) | 使用 ivy 来检索包。 |
sbt.ivy.home | 目录 | ~/.ivy2 | 包含本地 Ivy 存储库和工件缓存的目录。如果您在 CI 环境中使用 sbt 并且希望在运行之间缓存 ivy 工件,则应明确定义sbt.ivy.home。 |
sbt.log.noformat | 布尔值 | false | 如果为 true,则禁用 ANSI 颜色代码。在不支持颜色的构建服务器或终端上很有用。 |
sbt.main.class | 字符串 | sbt.xMain | 要使用的 sbt 类 (替代方案 包括sbt.ConsoleMain和sbt.ScriptMain). |
sbt.offline | 布尔值 | false | 避免从存储库中检索类。 |
sbt.override.build.repos | 布尔值 | false | 如果为 true,则会忽略构建定义中配置的存储库,而是使用为启动器配置的存储库。请参阅sbt.repository.config和 sbt 启动器 文档。 |
sbt.progress | 字符串 | ? | 使用always以显示进度(“超级外壳”)。 |
sbt.repository.config | 文件 | ~/.sbt/repositories | 包含要用于启动器的存储库的文件。格式与[repositories]部分的 sbt 启动器 配置文件相同。此设置通常与设置一起使用sbt.override.build.repos到true(请参阅sbt.override.build.repos和 sbt 启动器 文档)。 |
sbt.resident.limit | 数字 | 0 | 要保留的 Scala 编译器数量。此实验性功能旨在缩短编译时间。它似乎没有成功,此标志可能会被删除。 |
sbt.skip.version.write | 布尔值 | false | 生成build.properties如果缺少。请参阅sbt.genbuildprops. |
sbt.supershell | 布尔值 | true如果启用了颜色 | 使用超级外壳(在 shell 底部显示进度)。 |
sbt.supershell.sleep | 数字 | 100 | 更新超级外壳进度区域之间等待的时间。 |
sbt.task.timings | 布尔值 | false | 测量运行任务所花费的时间。 |
sbt.task.timings.omit.paths | 布尔值 | false | 在报告计时时省略路径。 |
sbt.task.timings.on.shutdown | 布尔值 | false | 在 JVM 关闭时报告计时(而不是在任务完成时)。 |
sbt.task.timings.threshold | 字符串 | 0 | 如果低于此阈值,则从计时报告中省略项目。 |
sbt.traces | 布尔值 | false | 为任务生成 Chrome 跟踪事件格式日志。 |
sbt.turbo | 布尔值 | false | 使用额外的分层类加载器。 |
sbt.version | 版本 | 1.9.8 | 要使用的 sbt 版本,通常从project/build.properties. |
sbt.watch.mode | 字符串 | auto | 如果polling,则定期检查文件系统是否有更新。 |