SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能.

SBT官网上给出各平台的安装方法:

  • MAC: 使用homebrew安装 brew install sbt
  • Ubuntu: 使用apt-get安装apt-get install
  • Win: 使用官网上的.msi安装

sbt可以管理的一个最简单的scala项目可以只有一个.scala文件. 编写一个hello.scala源文件:

object Hello {def main(args: Array[String]) {println("Hello, world!")}
}

在源文件所在目录中输入sbt命令, 进入sbt交互终端:

$ ls
hello.scala$ sbt
[info] Set current project to hello (in build file:~/test_scala/hello/)
> run
[info] Running HelloWorld
Hello, world!
[success] Total time: 1 s

或者使用批处理模式执行命令:

$ sbt run
> $ sbt run
[info] Set current project to hello (in build file:~test_scala/hello/)
[info] Running HelloWorld
Hello, world!
[success] Total time: 1 s

标准SBT项目

虽然sbt可以管理只有一个scala源文件的项目, 但是大多数项目的结构远比这复杂. sbt建议的项目结构:

root|- build.sbt|- project| |- build.properties| |- plugins.sbt|- src| |- main| | |- java| | |- scala| | |- resources| |- test| | |- java| | |- scala| | |- resources| |- test|- target

src目录下保存着项目源代码, src/main保存项目代码, src/test保存测试用例.target目录用于保存构建项目得到的目标代码.

sbt将项目根目录下的.sbt文件和project目录下的.scala文件作为构建管理文件.后者编写较为复杂, 但是可以实现一些.sbt无法实现的复杂功能.

有趣的是project本身也是一个标准的sbt项目, 其下也可以包含另一个project目录对其进行构建.

build.sbt

build.sbt中包含以下通用配置:

name := "hello"      // 项目名称organization := "xxx.xxx.xxx"  // 组织名称version := "0.0.1"  // 版本号scalaVersion := "2.12.1"   // 使用的Scala版本号

name和version属性在项目打包时将作为包名的一部分. organization则是包名的前缀比如org.apache.spark.

build.sbt中声明依赖:

resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"libraryDependencies +="com.typesafe.akka" %% "akka-actor" % "2.1.4"

第三方库的作者通常会提供相应的配置, 比如Using Akka with SBT.

大多数情况下我们可以使用上述这种managed dependencies方式管理依赖, 它们采用的是Apache Ivy管理方式.

必要的时候可以使用本地jar包作为unmanaged dependencies.

将jar包放入项目根目录下的CustomLib目录, 然后在build.sbt中添加配置:

unmanagedBase := baseDirectory.value / "CustomLib"

baseDirectory即为项目根目录.

完成依赖配置之后, 运行sbt update命令下载并配置依赖库.

project

project目录下的配置文件其实并非必须, 这里简介一下:

  • build.properties: 主要用于声明sbt的版本等信息

  • plugins.sbt: 配置sbt插件

sbt指令

sbt拥有交互式和批处理式两种执行方式, 在终端中使用sbt命令即可进入sbt交互环境.

在sbt命令后添加指令即可进入批处理模式:

$sbt clean compile run package

上文我们提及了runupdate指令, 这里我们介绍一下常用指令:

  • clean: 清除target下生成的文件
  • update根据构建配置更新依赖项
  • compile: 编译项目
  • run <args>: 运行项目
  • console: 打开一个scala终端, 可以在其中引用当前项目的类
  • test: 运行test目录下的所有测试用例
  • package: 将src/main中的所有类打包为jar
  • reload: 重新载入构建配置文件
  • help 显示帮助

Scala构建工具SBT相关推荐

  1. scala构建工具sbt使用介绍

    sbt工具下载及说明: https://www.scala-sbt.org/0.13/docs/zh-cn/Installing-sbt-on-Windows.html sbt是交互式构建工具,使用s ...

  2. sbt编程语言scala的构建工具配置及项目构建(附带网盘下载)

    SBT简介 SBT 是 Scala 的构建工具,全称是 Simple Build Tool, 类似 Maven 或 Gradle. Java可以用Maven快速构建项目,scala用SBT快速构建一个 ...

  3. java+构建+工具+Ant+Maven+Gradle

    java+构建+工具+Ant+Maven+Gradle Ant+Maven+Gradle+............ 目前: Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. M ...

  4. Java学习之常用的Java构建工具

    常用的Java构建工具介绍: Apache Maven – 主要用于 Java 项目的构建自动化工具. Hudson – 用 Ja​​va 编写的持续集成 (CI) 工具. Jenkins – 一个用 ...

  5. 构建工具Gradle

    1.Summary   从Android团队开始宣布放弃Eclipse转投Android Studio时,构建工具Gradle进入了Android开发者的视野.而随着热修复.插件化.编译时注解的流行, ...

  6. Java项目构建工具Gradle是否可以完全替代Maven?

    前言 在Java项目的开发中,需要引入自动化构建工具来帮助我们管理项目的外部依赖包.项目编译.打包等工作.Gradle和Maven是Java世界中两个重要的自动化构建工具,在项目中我们在两者之间如何选 ...

  7. 华为开源构建工具_为什么我构建了用于大数据测试和质量控制的开源工具

    华为开源构建工具 I've developed an open-source data testing and a quality tool called data-flare. It aims to ...

  8. linux java 构建工具有哪些,Linux ant --强大的Java开发构建工具

    用途说明 ant严格说来,ant其实并非原生的Linux命令,但它是一个使用广泛.功能强大的跨平台构建工具程序,尤其是进行Java开发时,许多开源的Java项目都使用ant作为构建工具.ant命令一般 ...

  9. iOS应用模块化的思考及落地方案(二)模块化自动构建工具的使用

    1.0 iOS模块化中的问题 前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下. 在工作中,当我们开始一个新项目的时候,最先考虑的就是模块化工作. 模块化工作的想法是很美好的,可是执 ...

最新文章

  1. 【深入浅出-JVM】(序)
  2. python开发安卓程序-用python开发android应用(1)
  3. ssl双向认证_SSL握手协议不清楚?vTrus为你讲解其详细流程
  4. DCMTK:测试文件是否使用DICOM Part 10格式
  5. Eclipse + Pydev开发Python时import报错解决方法
  6. SAPGUI里实现自定义的语法检查
  7. java 工厂模式的写法_设计模式-工厂模式
  8. 【Ogre-windows】实例配置
  9. netty实现消息群发
  10. MySQL安装编译时,/bin/rm: cannot remove `libtoolT': No such file or directory
  11. 001_02-python基础习题答案
  12. atitit.团队建设总结o6o fix
  13. Java JDK下载与安装教程
  14. 映美精两个相机同步采集求助
  15. 基于SSM+SpringBoot+Vue+ElmentUI实现公司案件管理系统
  16. poi生成excel并让excel的列有筛选功能
  17. 因子分析法之因子旋转
  18. 开发文件管理器-2015年9月19日
  19. hotfox(gyb v2.6)增强
  20. chemdraw怎么连接两个结构_用ChemDraw连接两个结构片段的教程

热门文章

  1. Mysql批量更新的一个坑-allowMultiQueries=true允许批量更新
  2. nginx 403 Forbidden
  3. WPF中路由事件的传播
  4. 相机标准之onvif---开放型网络视频接口论坛onvif 简介
  5. [一文一命令]ln命令详解
  6. 路由重发分之RIP-OSPF
  7. 解决Redis缓存雪崩、穿透、并发、预热、击穿、热点Key等问题
  8. 小学生都开始学Python了,你还不抓紧提升技术?
  9. python2 python3共存导致conda报错_Windows运维之Windows10下配置Python2和Python3共存 并用anaconda实现方便的包管理...
  10. 微信小程序scroll-view去掉滚动条