欢迎光临
我们一直在努力

关于SBT你需要知道的那些事

关于SBT你需要知道的那些事

之前在做一个有关spark的项目的时候,需要使用sbt构建scala代码,以前主要用maven,gradle也用一点,但是sbt实在陌生,摸索了一阵,把自己在使用sbt中最需要了解的东西记下来,以备同样不熟悉的同学做个参考。

SBT常识

sbt是个类比于maven、gradle的构建工具,主要用于scala项目 当然也可以用于别的。一个标准的sbt项目具有如下结构


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
build.sbt                   <- sbt构建定义文件,后缀名必须是.sbt,前边可以是任意名字,不要求必须是build
project/                    <- project目录下的所有.scala与.sbt文件都会被自动载入
  build.properties          <- 指定sbt的版本,如sbt.version=1.0.0,sbt启动器会自动安装本地没有的版本
  Dependencies.scala        <- 依赖配置,如果依赖较简单,可以省略该文件,直接写在build.sbt中
  plugins.sbt               <- 插件定义
src/
  main/
    resources/
    scala/                  <- scala源文件
    java/
  test/
    resources/
    scala/                  <- scala测试源文件
    java/
target/
bin/

最核心的当然是build.sbt这个文件,类比于maven中pom.xml 这个文件可以用scala语言编写,也可以包含一些特定的sbt的语法的东西,所以有时候看上去比较奇怪。
总结一下最基本的配置方式是key := value的方式

如何解决SBT在国内太慢的问题

我使用sbt的第一个问题就是太慢了,sbt里虽然可以使用maven的仓库 但是好像并没有继承maven的settings.xml配置的mirror,所以这里我们要对sbt做一下镜像的配置,比较合适的一个可以是这样


1
2
3
4
5
6
7
[repositories]
local
aliyun-nexus: http://maven.aliyun.com/nexus/content/groups/public/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots

SBT如何添加依赖

一个最基本的build.sbt文件


1
2
3
4
name := "sss1"
version := "0.1"
scalaVersion := "2.11"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.1"

就像前面说的,最基本的就是key := value
然后添加依赖就是libraryDependencies += “groupid” % “artifactId” % “version”
其中第一个百分号可以换成双百分号”%%”,表示在artifactId上补上当前的scala版本,比如上面的那个最终的依赖坐标就是 groupId:org.apache.spark, artifactId:spark-core_2.11, version:2.1.1

SBT如何添加本地依赖

这个很方便,SBT默认会把项目根目录下的lib目录作为“非托管依赖”,所以只要将你的jar包放到这个目录就可以了,当然如果的jar不想放在这个目录(我也不知道为什么,老子就是不想放在这个目录)这种情况你可以在build.sbt中配置


1
unmanagedBase := baseDirectory.value / "custom_lib"

SBT如何打印依赖树

方法可能很多,但是最简单,效果最好的方法就是利用一个插件
编辑 ~/.sbt/0.13/plugins/plugins.sbt 加上一行


1
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")

然后在项目根目录进入 sbt console
然后执行命令

1
tasks -V

会列出当前项目可用的sbt命令,你会发现多了一些dependency开头的,就是插件提供给我们的,我比较喜欢的一个命令是

1
dependencyBrowseGraphHtml

可以生成一个依赖树的HTML页面 比较直观。如下图
sbt查看html依赖树

由于本人也是刚开始使用sbt 遇到的问题还比较少 所以此文会继续保持更新

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 关于SBT你需要知道的那些事
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址