sbt打jar包總結

項目根目錄:build.sbt,內容如下:

name:="sqoopy"
version:="1.0"
scalaVersion:="2.11.8"
//使用阿里雲的倉庫
resolvers+="aliyun Maven Repository"at"http://maven.aliyun.com/nexus/content/groups/public"
externalResolvers:= Resolver.withDefaultResolvers(resolvers.value,mavenCentral =false)
//指定java版本
javacOptions++=Seq("-source","1.8","-target","1.8")
//依賴項,%%表示測試時需要,一般%; % "provided"表示此jar不打入最終的jar文件內
libraryDependencies+="org.apache.spark"%%"spark-core"%"2.1.1"%"provided"
libraryDependencies+="org.apache.spark"%%"spark-sql"%"2.1.1"%"provided"
//需要被打入fat jar的依賴
libraryDependencies+="com.typesafe"%"config"%"1.3.1"
libraryDependencies+="org.apache.httpcomponents"%"httpclient"%"4.5.2"
//指定主函數
mainClassinCompile:=Some("cn.leapstack.Transform")
//打包時,排除scala類庫
assemblyOptioninassembly:= (assemblyOptioninassembly).value.copy(includeScala =false)

在項目根目錄下的project文件夾下新建plugins.sbt,加入以下內容
addSbtPlugin("com.eed3si9n"%"sbt-assembly"%"0.14.5")
在項目根目錄下執行:
sbt clean assembly

如果有些jar包maven倉庫沒有,而工程中確實要用到,你可以在項目根錄下建立lib文件夾,將額外的jar放進去即可。
或者可以自定義lib文件夾的名稱,例如:
unmanagedBase := "mylib"
然後將用到的jar包放到工程根目錄的mylib文件夾下。
sbt會自動將lib下的jar包中的類加到最終的assembly jar中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章