메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


1. sbt-assembly 추가(project/assembly.sbt파일에 아래 내용을 추가함)

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


2. project.sbt(혹은 build.sbt) 파일에 아래의 내용을 추가한다.

(scala 2.10.4에 spark 1.5.0을 사용하는 하는 프로그램을 작성하는 경우임)


import sbtassembly.AssemblyPlugin._


name := "icbms"


version := "1.0"


 //scalaVersion := "2.11.8"

scalaVersion := "2.10.4"


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


libraryDependencies ++= Seq(

("org.apache.spark" %% "spark-core" % "1.5.0" % "provided")

.exclude("org.mortbay.jetty", "servlet-api").

    exclude("commons-beanutils", "commons-beanutils-core").

    exclude("commons-collections", "commons-collections").

    exclude("commons-logging", "commons-logging").

    exclude("com.esotericsoftware.minlog", "minlog").exclude("com.codahale.metrics", "metrics-core")

,

"org.apache.spark" %% "spark-sql" % "1.5.0" ,

"org.apache.spark" % "spark-streaming_2.10" % "1.6.2",

"org.apache.spark" % "spark-streaming-kafka_2.10" % "1.6.2" ,

"org.apache.avro" % "avro" % "1.7.7" 

)


assemblyMergeStrategy in assembly := {

    case PathList("javax", "servlet", xs @ _*) => MergeStrategy.last

    case PathList("javax", "activation", xs @ _*) => MergeStrategy.last

    case PathList("org", "apache", xs @ _*) => MergeStrategy.last

    case PathList("com", "google", xs @ _*) => MergeStrategy.last

    case PathList("com", "esotericsoftware", xs @ _*) => MergeStrategy.last

    case PathList("com", "codahale", xs @ _*) => MergeStrategy.last

    case PathList("com", "yammer", xs @ _*) => MergeStrategy.last

    case "about.html" => MergeStrategy.rename

    case "META-INF/ECLIPSEF.RSA" => MergeStrategy.last

    case "META-INF/mailcap" => MergeStrategy.last

    case "META-INF/mimetypes.default" => MergeStrategy.last

    case "plugin.properties" => MergeStrategy.last

    case "log4j.properties" => MergeStrategy.last

    case x =>

        val oldStrategy = (assemblyMergeStrategy in assembly).value

        oldStrategy(x)

}


3. fat jar만들기(프로젝트의 project 폴더에서 아래의 명령을 실행한다)

 sbt clean

 sbt update

 sbt compile

 sbt package

 sbt assembly


혹은 sbt clean update compile package assembly 를 연속 실행해도 된다.



* 참고 : https://github.com/sbt/sbt-assembly/

번호 제목 날짜 조회 수
35 .git폴더를 삭제하고 다시 git에 추가하고 서버에 반영하는 방법 2017.06.19 8631
34 build.gradle을 pom.xml로 변환하는 방법 2016.08.18 5012
33 spark submit용 jar파일을 만드는 sbt 용 build.sbt설정 파일(참고용) 2016.08.19 4794
» [sbt] sbt-assembly를 이용하여 실행에 필요한 모든 j라이브러리를 포함한 fat jar파일 만들기 2016.07.11 4556
31 원격 리포지토리에서 최초 clone시 Permission denied (publickey). 오류발생시 조치사항 2017.06.20 4516
30 [SBT] assembly시 "[error] deduplicate: different file contents found in the following:"오류 발생시 조치사항 2016.08.04 4489
29 .gitignore파일에 지정되지 않은 파일이 ignore되는 경우 확인방법 2016.11.22 4423
28 로컬에 있는 jar파일을 지정하고 dependency로 가져오기 2016.08.19 4317
27 [bitbucket] 2022년 3월 2일 부터 git 작업시 기존에 사용하던 비빌번호를 사용할 수 없도록 변경되었다. 2022.04.30 4241
26 ubuntu에 maven 3.6.1설치 및 환경변수 설정 2019.06.02 4156
25 원격의 origin/master를 기준으로 dev branch를 만들어 작업후 원격의 origin/dev에 push하는 방법 file 2016.11.22 4127
24 [sbt] sbt 0.13.11 를 windows에 설치하고 scala프로그램을 compile해서 jar파일 만들기 2016.07.11 3943
23 Eclipse 에서 bitbucket.org 연동 하기 file 2017.06.08 3891
22 [SBT] project.sbt에 libraryDependencies에 필요한 jar를 지정했으나 sbt compile할때 클래스를 못찾는 오류가 발생했을때 조치사항 2016.08.03 3806
21 특정 커밋 시점(commit id를 기준으로)으로 돌리기(reset) 2016.11.21 3732
20 원격에 있는 git를 받은후 기존repository삭제후 새로운 리포지토리에 연결하여 소스 등록 2019.07.13 3725
19 build할때 unmappable character for encoding MS949 에러 발생시 조치사항 2016.08.03 3674
18 git 초기화(Windows에서 Git Bash사용) 2016.11.17 3607
17 compile할때와 exclude할때 대상을 표현하는 명칭이 다르므로 주의할것 2016.08.10 3451
16 특정 단계의 commit상태로 만들기(이렇게 하면 중간에 반영된 모든 commit를 history가 삭제된다) 2016.11.17 3391
위로