参考
https://www.scala-sbt.org/1.x/docs/zh-cn/Library-Dependencies.html
有两种方式
非托管依赖:放在lib目录下的jar包
托管依赖:配置在构建定义中,并且会自动从仓库中下载
非托管依赖
- 将jar包放在lib文件下
- 如果需要修改lib的名称为custom_lib,在build.sbt文件中添加
unmanagedBase := baseDirectory.value / "custom_lib"
其中baseDirectory表示项目的根目录
托管依赖
sbt使用Apache Ivy实现托管依赖,sbt默认使用标准的Maven2仓库
libraryDependencies ++= Seq(
groupID % artifactID % revision,
groupID % otherID % otherRevision
)
或
libraryDependencies += groupID % artifactID % revision % configuration
添加额外仓库
类似 resolvers += name at location
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
也可以用来添加本地Maven仓库
resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
例子
name := "ProjectName"
version := "0.1"
scalaVersion := "2.10.6"
libraryDependencies ++= Seq( //依赖库
"org.apache.spark" % "spark-core_2.10" % "1.6.0" % "provided",
"com.*****.******" % "common" % "1.1.4-SNAPSHOT" % "provided", //额外仓库中的依赖
"org.apache.hadoop" % "hadoop-client" % "2.6.4" % "provided"
)
resolvers ++= Seq( //额外仓库添加
"Admonitor Repository" at "http://maven.mzsvn.com/repository/admonitor",
"Local Maven Repository" at "file:///home/dwj/.m2/repository"
)
publishMavenStyle := true
publishArtifact in Test := false
publishTo <<= version { (v: String) =>
val nexus = "http://maven.mzsvn.com/"
if (v.trim.endsWith("SNAPSHOT"))
Some("snapshots" at nexus + "repository/admonitor-snapshots")
else
Some("releases" at nexus + "repository/admonitor-releases")
}