욱'S 노트

SBT - 인텔리J와 시작하기 본문

Programming/sbt

SBT - 인텔리J와 시작하기

devsun 2017. 2. 22. 10:54

sbt는 스칼라와 자바를 위한 빌드툴이다. 스칼라를 사용하다보면 자주 접하게 되므로 간단한 사용법을 파악해보자.

설치하기

sbt는 이 문서를 작성하는 기준으로 0.3.13이 최신버전이며 jre 1.6이상의 환경을 요구한다. 설치방법은 굉장히 간단하다. 공식사이트에서 zip이나 tgz로 압축된 배포본을 다운로드 받을 수 있다. 로컬로 다운받은 다음 적절한 위치에 압축을 해제하자. 압축을 해제한 후 bin 디렉토리 하위에서 아래와 같은 커맨드를 수행해서 정확히 설치되었는지 여부를 확인해보자.

$ sbt sbt-version
[info] Set current project to bin (in build file:/Users/devsun/dev/sbt-0.13.13/bin/)
[info] 0.13.13

인텔리J 프로젝트 구성

인텔리J에서 File > New > Project를 수행하면 다음과 같은 다이얼로그가 나타날 것이다. 여기서 Scala > sbt를 선택하여 새로운 프로젝트를 하나 구성해보자.


일단 프로젝트명만 hello-sbt로 변경하여 생성해보았다.


디렉토리 구조

베이스디렉토리 - 프로젝트의 루트 디렉토리이다. 여기서는 hello-sbt가 베이스디렉토리이다.
소스 디렉토리 - 소스 디렉토리의 구조는 maven과 거의 동일하다.

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>


빌드 definition 파일 - 베이스 디렉토리에 있는 build.sbt 파일
빌드 support 파일 - 베이스 디렉토리 하위 project라는 디렉토리에 포함한 파일들을 의미한다.
빌드 target 디렉토리 - 기본으로 베이스 디렉토리 하위의 target

타스크 수행해보기

간단히 아래와 같이 컴파일 타스크를 수행해보자. 이것 역시 메이븐과 매우 유사하다.

$ sbt compile
[info] Loading project definition from /Users/devsun/dev/projects/hello-sbt/project
[info] Set current project to hello-sbt (in build file:/Users/devsun/dev/projects/hello-sbt/)
[info] Compiling 1 Scala source to /Users/devsun/dev/projects/hello-sbt/target/scala-2.12/classes...
[success] Total time: 3 s, completed 2017. 2. 22 오전 10:30:41

기본적으로 sbt에서 제공하는 타스크는 다음과 같다.

clean - 타겟 디렉토리에 생성된 모든 파일을 삭제한다.
compile - 메인 리소스에 있는 모든 소스를 컴파일 한다.
test - 컴파일을 하고 모든 테스트케이스를 수행한다.
package - src/main 하위의 자바와 스칼라의 컴파일된 클래스와 리소스를 패키징한다./java.
reload  - 빌드 설정을 리로드한다.

빌드정의

sbt version

빌드에서 사용할 sbt의 버전을 project/build.properties에 명시할 수 있다.

sbt.version = 0.13.13

build definition

출처 : http://www.scala-sbt.org/0.13/docs/

'Programming > sbt' 카테고리의 다른 글

SBT - Plugins  (0) 2017.03.03
SBT - 멀티 프로젝트  (0) 2017.02.28
SBT - 디펜던시 관리  (0) 2017.02.28
SBT - build definition  (0) 2017.02.27
Comments