我们可以使用intellij idea 帮我们建立sbt 程序,但是会产生很多无用的文件,可以手动的建立一个sbt 程序:
假设你有一个sbt工程叫GBQ5,我们可以建立一个下面的目录结构:
1. build.sbt 主要配置自己的依赖包,包的依赖分为托管和非托管,其中: unmanagedBase := baseDirectory.value / "custom_lib", 配置了非托管的包的路径....
import _root_.sbt.Keys._
import _root_.sbt.Resolver
import _root_.sbt._
import _root_.sbtassembly.Plugin.AssemblyKeys
import AssemblyKeys._
import _root_.sbtassembly.Plugin.AssemblyKeys._
import _root_.sbtassembly.Plugin.MergeStrategy
import _root_.sbtassembly.Plugin._
assemblySettings
mergeStrategy in assembly <<= (mergeStrategy in assembly) { mergeStrategy =>
{
case entry => {
val strategy = mergeStrategy(entry)
if (strategy == MergeStrategy.deduplicate) MergeStrategy.first
else strategy
}
}
}
name := "GBQ5"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.4.1"
libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "1.4.1"
resolvers += "Job Server Bintray" at "https://dl.bintray.com/spark-jobserver/maven"
libraryDependencies += "spark.jobserver" %% "job-server-api" % "0.6.0" % "provided"
libraryDependencies += "spark.jobserver" %% "job-server-extras" % "0.6.0" % "provided"
unmanagedBase := baseDirectory.value / "custom_lib"
resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
2. custom_lib
存放非托管的jar包, 在进行打包的时候,把非托管的jar包打到自己的包中
3. plugins.sbt
resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
4.scala/main/src
在这个目录里写自己的程序即可
程序写完后在GBQ5目录执行sbt assembly 即可打包程序。