Skip to content

Instantly share code, notes, and snippets.

@jungbin-kim
Last active June 12, 2017 11:56
Show Gist options
  • Save jungbin-kim/f564150aa9b39da5a910b4e517b2b962 to your computer and use it in GitHub Desktop.
Save jungbin-kim/f564150aa9b39da5a910b4e517b2b962 to your computer and use it in GitHub Desktop.
sbt 프로젝트에서 사용한 라이브러리들 정리

SBT 프로젝트에서 사용한 라이브러리들

Typesafe's config

JVM 언어를 위한 Configuration 라이브러리.Github

play framework에서는 보통 conf/application.conf경로 상에 존재하는데 반해, sbt 프로젝트 상에서는 src/main/resources라는 경로에 application.conf를 만들어야 처리할 수 있다. 다른 경로 상에 다른 이름으로 놓으면 별도의 처리를 통해 사용할 수 있다.

라이브러리 설정은 다음과 같음

  • build.sbt
    libraryDependencies += "com.typesafe" % "config" % "1.3.1"
    
  • scala 코드 상의 import 및 사용
    import com.typesafe.config.ConfigFactory
    
    object Hello with App {
      val test = ConfigFactory.load().getString("hello")
      println(test)
    }
  • 참고문서 http://qiita.com/visualskyrim/items/2df950f4b61c64916acd

slick

slick 3.0을 사용하기 위해 필요한 라이브러리 설정은 다음과 같음.

  • build.sbt
libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick" % "3.0.0",
  "com.zaxxer" % "HikariCP" % "2.3.2",
  "org.mariadb.jdbc" % "mariadb-java-client" % "1.5.9",
  "org.slf4j" % "slf4j-nop" % "1.6.4"
)
  • App
import scala.concurrent.duration.Duration
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import slick.driver.MySQLDriver.api._

object Hello extends App {
  val db = Database.forConfig({end point in application.conf})
  val q = sql"{plain sql query}".as[String]
  Await.result(
    db.run(q).map{ res=>
      println(res)
    }, Duration.Inf)
}

라이브러리 사용 간 Error

slick 3.0 import할 때, UNRESOLVED DEPENDENCIES 에러

  • 에러 메시지
    [warn]  module not found: com.typesafe.slick#slick_2.12;3.0.0
    [warn] ==== local: tried
    [warn]   /Users/jungbin/.ivy2/local/com.typesafe.slick/slick_2.12/3.0.0/ivys/ivy.xml
    [warn] ==== public: tried
    [warn]   https://repo1.maven.org/maven2/com/typesafe/slick/slick_2.12/3.0.0/slick_2.12-3.0.0.pom
    [warn] ==== local-preloaded-ivy: tried
    [warn]   /Users/jungbin/.sbt/preloaded/com.typesafe.slick/slick_2.12/3.0.0/ivys/ivy.xml
    [warn] ==== local-preloaded: tried
    [warn]   file:////Users/jungbin/.sbt/preloaded/com/typesafe/slick/slick_2.12/3.0.0/slick_2.12-3.0.0.pom
    [warn] ==== typesafe: tried
    [warn]   http://repo.typesafe.com/typesafe/releases/com/typesafe/slick/slick_2.12/3.0.0/slick_2.12-3.0.0.pom
    [info] Resolving jline#jline;2.14.1 ...
    [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
    [warn]  ::          UNRESOLVED DEPENDENCIES         ::
    [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
    [warn]  :: com.typesafe.slick#slick_2.12;3.0.0: not found
    [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
  • 해결 방법 resolvers 추가하라는 글을 보고 resolever를 추가해도 똑같은 이슈가 발생.

unresolved 가 발생하는 이유는 dependcy 설정이된 library를 다운 받을 수 없어서임. 내가 겪어본 다운 받을 수 없는 상황은 다음과 같음.

  • build.sbt에 선언된 스칼라 버전과 맞는 라이브러리가 없는 경우 => scala version을 낮춤: 2.12.1-> 2.11.7
  • local, default 설정된 repository, 사용자가 추가한 repository 내에서 선언한 라이브러리를 찾을 수 없는 경우   sbt는 선언된 라이브러리를 local -> 기본 저장소 -> 사용자가 추가한 repository(resolver)에서 찾아서 다운받아 사용하는데 그럴 수 없을 때 에러 발생함.

slick 사용 시, 가이드 문서에 mariadb 드라이버가 없었음

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment