sbt assembly 적용 후기입니다.

1,192 views
Skip to first unread message

Sangwoo Kim

unread,
Sep 7, 2015, 9:38:53 PM9/7/15
to 은전한닢 프로젝트
부족한 점이 많지만 sbt assembly 적용을 성공하여 후기 올려봅니다.

조금 더 좋은 방법을 알게 되면 다시 올려 놓겠습니다.

OS는 Ubuntu 14.04 입니다.

 
sbt assembly 를 적용하기 위해서는 sbt 파일 2개와 scala 파일 1개가 다음의 경로에 있어야 합니다.
 
$./build.sbt
$./project/assembly.sbt
$./src/main/scala/seunjeon.scala
 
각각의 파일 내용은 다음과 같습니다.
 
./build.sbt 파일

------------------------------------------------------------------------------------

import AssemblyKeys._

assemblySettings

lazy val root = (project in file(".")).settings(

  name := "seunjeon",
  version := "0.2.0",
  scalaVersion := "2.11.7"
 )

libraryDependencies ++= Seq(

  "org.bitbucket.eunjeon" % "seunjeon_2.11" % "0.2.0" )

resolvers += "Akka Repository" at "http://repo.akka.io/releases/"

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>

 {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
 }
}

------------------------------------------------------------------------------------
 
./project/assembly.sbt 파일
 
------------------------------------------------------------------------------------


addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")


------------------------------------------------------------------------------------

./src/main/scala/seunjeon.scala 파일
 
------------------------------------------------------------------------------------

import org.bitbucket.eunjeon.seunjeon._
object mecabAnalyzer  {
 def main (args: Array[String]) {

  Analyzer.parse("형태소분석기입니다. 사랑합니다.").foreach(println)

 }

}

------------------------------------------------------------------------------------

각각의 파일을 다음의 경로에 위치시킨 후 sbt assembly 로 실행하면

./target/scala-2.11/seunjeon-assembly-0.2.0.jar

파일이 생성 됩니다.

이 jar 파일을 uber jar 또는 fat jar 라고 합니다.

생성된 파일은 java -jar ./target/scala-2.11/seunjeon-assembly-0.2.0.jar로 실행이 됩니다.

sbt assembly는 성공했지만 제가 실행하려고 했던 Spark 환경에서는 Scala 버전 문제로 실행이 안되는 것 같습니다.

차후에 Spark 에서 Scala 버전을 2.11로 올리게 되면 문제 없이 작동하리라 생각됩니다

유영호

unread,
Sep 7, 2015, 9:59:06 PM9/7/15
to 은전한닢 프로젝트
축하드립니다. ^^
스칼라 버전문제는 왜 생기는건가요? seunjeon 스칼라 버전이 너무 높아서 그런가요? 또는 jdk 버전이 높아서 그런가요? 도움 드릴 수 있는 방법이 있다면 언제라도 말씀주시면 되겠습니다.
아 그리고 0.2.1 버전이 나왔습니다. 0.2.0 버그가 있어서요 ㅎ 다음에 이용하실 일이 있다면 upgrade하시면 되겠습니다 ^^

수고하세요~

Sangwoo Kim

unread,
Sep 7, 2015, 10:14:00 PM9/7/15
to 은전한닢 프로젝트
Apache Spark의 Scala 버전은 2.10 인데, seunjeon 버전은 2.11  이라서 문제가 발생합니다.

Scala 2.11로 빌드한 jar를 Spark에서 실행시키면 경우에 따라서 될때도 있고 안될때도 있습니다.

Spark 쪽에서 Scala 2.11 버전을 테스트 하고 있으니 해당 문제는 조만간에 해결될 듯 합니다.

나중에라도 seunjeon 관련하여 도움이 될만한 정보가 있으면 올리겠습니다.

유영호님 덕분에 좋은 정보 얻었습니다.

감사합니다.
Reply all
Reply to author
Forward
0 new messages