2012 Jul 16

- by
Changwoo Park

sbt

sbt: Getting Started Guide: Directory Layout

이 글은 Getting Started sbt을 번역한 것이다.

sbt

Base directory

sbt에서 "base 디렉토리"는 프로젝트가 들어 있는 디렉토리를 말한다. Hello, World 에서 만든 hello 프로젝트에는 hello/build.sbthello/hw.scala 파일이 있는데 여기서 hello 디렉토리가 base 디렉토리이다.

Source code

소스는 hello/hw.scala처럼 프로젝트 base 디렉토리에 넣으면 된다. 하지만 보통은 그냥 넣으면 너무 지저분하기 때문에 정리해서 넣는 규칙이 있다.

sbt는 기본적으로 Maven과 같은 디렉토리 레이아웃을 사용한다(모든 경로는 base 디렉토리를 기준으로 하는 상대 경로다):

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

src/ 안에 있는 다른 디렉토리와 숨겨진 디렉토리는 무시된다.

sbt build definition files

build.sbt 파일은 base 디렉토리에 넣지만 다른 sbt 파일은 project 디렉토리를 만들어 넣는다.

project 디렉토리에는 .scala 파일을 넣을 수 있고 이 .scala 파일은 .sbt 파일과 함께 빌드를 정의하는데 쓴다. 자세한건 .scala Build Definition를 봐라.

build.sbt
project/
  Build.scala

project/ 디렉토리 안쪽에도 .sbt 파일을 넣을 수 있지만 base 디렉토리에 있는 .sbt 파일과 다르다. 이점은 몇 가지 사전지식이 필요하기 때문에 나중에에서 설명한다.

Build products

기본적으로 target 디렉토리에 파일을(컴파일한 클래스, 패키지한 jar 파일, managed 파일, 캐시, 문서) 생성한다.

Configuring version control

.gitignore 파일에 target/ 디렉토리를 추가한다. 다른 버전관리 시스템도 git처럼 target/ 디렉토리를 추가해야 한다:

target/

이름이 /로 끝났다. / 끝나는 이름은 디렉토리만 매치하겠다는 의미다. 그리고 /로 시작하지 않았기 때문에 base 디렉토리에 있는 target/ 뿐만 아니라 project/target처럼 하위 디렉토리 안에 있는 디렉토리도 매치된다.