构建布局

sbt 使用文件放置约定,便于快速上手新的 sbt 构建:

.
├── build.sbt
├── project/
│   ├── build.properties
│   ├── Dependencies.scala
│   └── plugins.sbt
├── src/
│   ├── main/
│   │   ├── java/
│   │   ├── resources/
│   │   ├── scala/
│   │   └── scala-2.13/
│   └── test/
│       ├── java/
│       ├── resources/
│       ├── scala/
│       └── scala-2.13/
├── subproject-core/
│   └── src/
│       ├── main/
│       └── test/
├─── subproject-util/
│   └── src/
│       ├── main/
│       └── test/
└── target/
  • 本地根目录 . 是您构建的起点。
  • 在 sbt 的术语中,base directory(基目录)是包含子项目的目录。在上面的示例中,.subproject-coresubproject-util 都是基目录。
  • 构建定义在本地根目录的 build.sbt(实际上是任何名为 *.sbt 的文件)中描述。
  • sbt 版本在 project/build.properties 中跟踪。
  • 生成的文件(编译后的类、打包的 jar、托管文件、缓存和文档)默认会写入 target 目录。

构建支持文件

除了 build.sbt 之外,project 目录还可以包含定义辅助对象和一次性插件的 .scala 文件。

.
├── build.sbt
├── project/
│   ├── build.properties
│   ├── Dependencies.scala
│   └── plugins.sbt
....

您可能会在 project/ 内看到 .sbt 文件,通常用于声明插件。请参阅 插件基础

源代码

sbt 默认使用与 Maven 相同的目录结构存放源文件(所有路径均相对于基目录):

....
├── src/
│   ├── main/
│   │   ├── java/        <main Java sources>
│   │   ├── resources/   <files to include in main JAR>
│   │   ├── scala/       <main Scala sources>
│   │   └── scala-2.13/  <main Scala 2.13 specific sources>
│   └── test/
│       ├── java/        <test Java sources>
│       ├── resources/   <files to include in test JAR>
│       ├── scala/       <test Scala sources>
│       └── scala-2.13/  <test Scala 2.13 specific sources>
....

src/ 中的其他目录将被忽略。此外,所有隐藏目录也将被忽略。

源代码可以放在项目的基目录中,如 hello/app.scala,这对于小项目可能可以接受,但对于常规项目,人们倾向于将项目放在 src/main/ 目录中以保持整洁。

配置版本控制

您的 .gitignore(或其他版本控制系统的等效文件)应包含:

target/

Note

Note that this deliberately has a trailing / (to match only directories) and it deliberately has no leading / (to match project/target/ in addition to plain target/).