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 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)
}
- 에러 메시지
[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)에서 찾아서 다운받아 사용하는데 그럴 수 없을 때 에러 발생함.
-
해결 방법 원래 사용하던 mariaDB jdbc 라이브러리 사용("org.mariadb.jdbc" % "mariadb-java-client" % "1.5.9")
-
참고문서 http://arnaudt.github.io/2015/03/31/slick-codegen.html http://slick.lightbend.com/doc/3.0.0/supported-databases.html#supported-databases https://stackoverflow.com/questions/32623875/connecting-to-mysql-using-slick-3-0-no-username-no-password-and-bogus-driver