1. 目录结构

目录结构 

本页假设您已安装 sbt并已查看sbt 实例.

基准目录 

在 sbt 的术语中,“基准目录”是指包含项目的目录。因此,如果您创建了一个包含 /tmp/foo-build/build.sbt 的项目 hello,如sbt 实例所示,/tmp/foo-build 就是您的基准目录。

源代码 

默认情况下,sbt 使用与Maven 相同的目录结构来存放源文件(所有路径相对于基准目录)。

src/
  main/
    resources/
       <files to include in main jar here>
    scala/
       <main Scala sources>
    scala-2.12/
       <main Scala 2.12 specific sources>
    java/
       <main Java sources>
  test/
    resources
       <files to include in test jar here>
    scala/
       <test Scala sources>
    scala-2.12/
       <test Scala 2.12 specific sources>
    java/
       <test Java sources>

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

源代码可以放在项目的基准目录中,例如 hello/app.scala,对于小型项目来说可能没问题,但对于普通项目来说,人们倾向于将项目放在 src/main/ 目录中,以保持整洁。您可以在基准目录中放置 *.scala 源代码这一事实可能看起来像是一个奇怪的技巧,但这一事实会在之后变得相关。

sbt 构建定义文件 

构建定义在项目基准目录中的 build.sbt(实际上是名为 *.sbt 的任何文件)中描述。

build.sbt

构建支持文件 

除了 build.sbt 之外,project 目录还可以包含 .scala 文件,这些文件定义辅助对象和一次性插件。有关更多信息,请参阅组织构建.

build.sbt
project/
  Dependencies.scala

您可能会在 project/ 中看到 .sbt 文件,但它们与项目基准目录中的 .sbt 文件不同。解释这一点将在之后进行,因为您首先需要一些背景信息。

构建产物 

默认情况下,生成的文件(编译后的类、打包的 jar 文件、管理文件、缓存和文档)将写入 target 目录。

配置版本控制 

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

target/

请注意,这故意包含一个尾部的 /(仅匹配目录)并且故意没有前导 /(除了匹配 project/target/ 之外,还要匹配 target/)。