부족한 점이 많지만 sbt assembly 적용을 성공하여 후기 올려봅니다.
조금 더 좋은 방법을 알게 되면 다시 올려 놓겠습니다.
OS는 Ubuntu 14.04 입니다.
sbt assembly 를 적용하기 위해서는 sbt 파일 2개와 scala 파일 1개가 다음의 경로에 있어야 합니다.
$./build.sbt
$./project/assembly.sbt
$./src/main/scala/seunjeon.scala
각각의 파일 내용은 다음과 같습니다.
./build.sbt 파일
------------------------------------------------------------------------------------
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로 올리게 되면 문제 없이 작동하리라 생각됩니다