본문 바로가기

Programming Language/Java & Scala

Intellij에서 scala와 sbt를 사용시 반드시 알아야할 3가지


아래 글은 Intellij IDEA 2018.2 이후 버젼에서 scala를 사용하기 위한 sbt plugin이 동작하는 방식에 대해 설명한 글 입니다. 만약 이 글을 보시는 분이 intellij에서 scala와 sbt plugin을 쓰신다면 반드시 이 포스팅을 읽어볼 것을 권장합니다. 


제가 삽질을 너무 많이해서.. 다른 분은 삽질을 덜 했으면 좋겠습니다. ㅠㅠ


SBT

SBT란. SBT는 최신 빌드 도구 중 하나이다. 스칼라로 작성되었고, 스칼라에 사용하기 편한 기능을 많이 제공하기는 하지만, SBT 자체는 범용 빌드 도구이다.


1. sbt project를 import 하기

이미 존재하는 sbt로 빌드된 project를 intellij에서 사용하기 위해 import할 때 아래와 같이 진행한다.

(1) Intellij 첫화면에서 Import Project 또는 Open 클릭

(2) sbt project가 존재하는 directory에서 build.sbt를 누르고 OK 클릭

(3) Import Project 마법사 설정
 - Use sbt shell for build and import(requires sbt 0.13.5+) 활성화 : sbt의 build 프로세스가 진행될때 code를 자동 generation 하는등 기초 셋팅을 도와준다.

2. sbt version 정하기

sbt version을 build.properties파일을 통해 정할 수 있다.

(1) sbt project Import(위에 1번 항목)

(2) intellij의 Project tool window에서 build.properties file을 연다

(3) editor화면에서 해당 프로젝트에 필요한 sbt 버젼을 입력한다.
sbt.version=xxx
만약 해당 project의 source directory에 build.properties file이 없다면 intellij가 newer sbt versions(1.0 +)을 셋팅하여 자동으로 build.properties 파일을 만들어준다.

▶ 이것 때문에 개고생 했습니다. 만약 project의 root directory에 있는 build.properties를 특정버젼(0.13.12)로 설정한다고 해도, intellij에 의해 자동으로 만들어진 project/build.properties의 버젼(1.2.X)으로 인해 정상적으로 빌드가 되지 않을 수 있습니다! 반드시 build.properties file에 있는 버젼을 맞춰서 sbt build를 하시기 바랍니다 ㅠ

▶ 상기내용은 intellij의 sbt plugin에 종속되는 내용이기 때문에 sbt 공식 guide문서에는 가이드 되어 있지 않습니다!!

(4) sbt project tool 화면에서 Refresh버튼을 누른다.

3. sbt project 매니지먼트

intellij에서 sbt project 구조도

sbt project를 intellij에서 생성하거나 import하게 되면 아래와 같이 구조가 잡힌다.

- [project window] project의 root에는 src, target folder 그리고 build.sbt file이 존재

- [project window] project의 root밑에 project라고 불리는 subdirectory에서 build에 필요한 정보를 관리

- [sbt project tool window] sbt task, command, setting등을 확인 가능


intellij에서 sbt project의 library 손쉬운 추가

개발을 하면서 build.sbt에 직접 손댈 필요없이 단축키로 library dendency를 추가 가능하다.

(1) 특정 .scala file 열기

(2) import하고 싶은 library이름 입력

(3) [⌥⏎] 누르기

(4) Add sbt dependency 클릭

(5) build.sbt refresh(혹은 auto-import라면 자동으로 import가 됨)


원문 출처 : https://www.jetbrains.com/help/idea/sbt-support.html


반응형