욱'S 노트

SBT - 디펜던시 관리 본문

Programming/sbt

SBT - 디펜던시 관리

devsun 2017. 2. 28. 10:13

라이브러리 디펜던시를 추가하는 방법에는 두가지 방법이 있다.

  • unmanaged dependencies는 라이브러리는 lib 디렉토리에 저장하다.
  • managed dependencies는 build definition에 설정하고 자동으로 리파지토리로부터 다운로드 된다.

대부분의 경우 managed dependencies를 사용하므로 사용법에 대해서 살펴보자.

Managed Dependencies

sbt에서는 기본적으로 Apache Ivy를 리파지토리로 사용한다.

The libraryDependencies key

우리는 librayDependencies key에 디펜던시 리스트 추가함으로써 디펜던시 정의를 할 수 있다.

libraryDependencies += groupID % artifactID % revision

아래는 실제로 더비의 디펜던시를 추가한 예이다.

libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3"

또한 ++= 연산자를 통해 Seq를 직접 추가할 수도 있다.

libraryDependencies ++= Seq(
  groupID % artifactID % revision,
  groupID % otherID % otherRevision
)

일반적으로 groupID %% artifactID % revision을 쓰는 방식이 더 좋다. 왜냐하면 %% 연산자는 프로젝트의 스칼라 버전에 맞는 디펜던시를 찾아주기 때문이다.

libraryDependencies += "org.scala-tools" % "scala-stm_2.11.1" % "0.3"

만약 프로젝트에서 스칼라 버전 2.11.1을 사용하고 있다면 위의 디펜던시 정의는 다음과 같이 변경될 수 있다.

libraryDependencies += "org.scala-tools" %% "scala-stm" % "0.3"

Resolvers

모든 패키지가 같은 서버에 존재하지 않을수도 있다. sbt는 기본으로 표준 maven2 리파지토리를 사용한다. sbt에서는 다음과 같이 리파지토리를 추가할 수 있다.

resolvers += name at location

예를 들면 다음과 같다.

resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"

TEST 디펜던시

테스트코드에서만 사용하는 디펜던시를 관리하고 싶을때가 있다. 사용하는 방식은 디펜던시에 % test를 추가하는 것이다.

libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3" % "test"

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

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

SBT - Plugins  (0) 2017.03.03
SBT - 멀티 프로젝트  (0) 2017.02.28
SBT - build definition  (0) 2017.02.27
SBT - 인텔리J와 시작하기  (0) 2017.02.22
Comments