Estructura de directorios 

Esta página supone que has instalado sbt y leído sbt mediante ejemplos.

Directorio base 

En la terminología de sbt, el “directorio base” es el directorio que contiene el proyecto. Así pues, si has creado un proyecto hello que contiene /tmp/foo-build/build.sbt tal y como se muestra en sbt mediante ejemplos, el directorio base será /tmp/foo-build.

Código fuente. 

sbt emplea de forma predeterminada la misma estructura de directorios utilizado por Maven para ficheros fuente (todas las rutas son relativas al directorio base):

src/
  main/
    resources/
       <ficheros del jar principal aquí>
    scala/
       <fuentes principales de Scala>
    java/
       <fuentes principales de Java>
  test/
    resources
       <ficheros del jar de test aquí>
    scala/
       <fuentes de test de Scala>
    java/
       <fuentes de test de Java>

Cualquier otro directorio en src/ es ignorado. También son ignorados todos los directorios ocultos.

El código fuente puede estar situado en el directorio base del proyecto como hello/app.scala, lo cual puede estar bien para proyectos pequeños, aunque para proyectos normales la gente suele estructurar los proyectos en el directorio src/main/ para tener las cosas ordenadas.

El hecho de que se permita código fuente del tipo *.scala en el directorio base puede parecer algo raro, pero veremos que este hecho es relevante más adelante.

Ficheros de definición de construcción 

La definición de construcción es descrita en build.sbt (en realidad cualquier fichero llamado *.sbt) en el directorio base del proyecto.

build.sbt

Ficheros auxiliares 

Además de build.sbt, el directorio project puede contener ficheros .scala que definen objetos auxiliares y plugins puntuales.

Para más información mira Organizar la construcción.

build.sbt
project/
  Dependencies.scala

Puede que veas ficheros .sbt dentro de project/ pero no son equivalentes a los ficheros .sbt del directorio base del proyecto. La explicación a esto vendrá más adelante, ya que primero necesitarás conocer algunos conceptos.

Construir productos 

Los ficheros generados (clases compiladas, jars empaquetados, ficheros gestionados, caches y documentación) son escritos en el directorio target de forma predeterminada.

Configurar el control de versiones 

Tu .gitignore (o el equivalente para otros sistemas de control de versiones) debería de contener:

target/

Fíjate en que deliberadamente acaba con / (para coincidir sólo con directorios) y que deliberadamente no empieza con / (para coincidir con project/target/ además del target/ en la raíz).