Scala构建工具SBT
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
上文我们提及了run
和update
指令, 这里我们介绍一下常用指令:
clean
: 清除target
下生成的文件update
根据构建配置更新依赖项compile
: 编译项目run <args>
: 运行项目console
: 打开一个scala终端, 可以在其中引用当前项目的类test
: 运行test
目录下的所有测试用例package
: 将src/main
中的所有类打包为jarreload
: 重新载入构建配置文件help
显示帮助
Scala构建工具SBT的更多相关文章
- Scala构建工具sbt的配置
时间是17年12月24日.初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾.下面的配置参考了好多篇不同的文章,已经没法一一留下出处了.而且还 ...
- 项目自动构建工具对比(Maven、Gradle、Ant)
Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是 ...
- Java 中三大构建工具:Ant、Maven和Gradle
Java世界中主要有三大构建工具:Ant.Maven和Gradle 目前:Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是依赖管理系统 ...
- 浅谈java构建工具的选择
在学校的时候还总是自己用eclipse自带的jar导出工具,然后人工来给项目打包,那是相当的原始. 而后工作了,项目中都是用ant,慢慢的开始学会使用这个工具.感觉就和脚本一样,很容易读懂,做项目构建 ...
- 编译工具sbt部署
目录 一.简介 二.部署 三.测试 一.简介 项目构建工具是项目开发中非常重要的一个部分,充分利用好它能够极大的提高项目开发的效率.在学习SCALA的过程中,我遇到了SBT(Simple Build ...
- Google软件构建工具Bazel FAQ
Google软件构建工具Bazel FAQ 本文是我的翻译,原文在这里.欢迎转载,转载请注名本文作者和原始链接 注:如果想了解Bazel的原理,可以看看我之前翻译的Google Blaze原理及使用方 ...
- 学习笔记——Maven实战(六)Gradle,构建工具的未来?
Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...
- 项目管理及自动构建工具Maven
项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...
- 构建工具Gradle安装和简单使用
1. 安装 到gradle官网下载页 https://gradle.org/gradle-download/ 下载gradle,其中“完全版(Complete distribution)”包含除了运行 ...
随机推荐
- atom编辑器使用“apm install”无法响应的解决方案
工具:shadowsocks 利用ss建立代理服务,之后apm --help,得到apm的配置命令: apm - Atom Package Manager powered by https://ato ...
- Alpha 冲刺 (5/10)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前后端接口的开发 测试项目运行的服务器环 ...
- linux_文件夹实现挂载(必须在同一网段)
将外部想要挂载传输的目录开启共享文件夹 首先进行安装 yum install nfs-utils rpcbind yum install nfs* 建立想要挂载的目录 查看可以执行挂载的目录有哪些 s ...
- javascript 错误监控
一.错误分类 1,即使运行错误:代码错误, 2.资源加载错误 二. 错误的捕获方式 1.即使运行错误的捕获方式 a. try catch b.window.onerror 2.资源加载错误 ...
- 前端vue框架 路由的安装及使用
安装: 1.cmd下输入: npm install vue-router --save //安装路由 2.npm run dev //重新启动 使用: 1.在mian.js下引入路由 import V ...
- 3.装配Bean 基于XML
一.实例化方式 3种bean实例化方式:默认构造.静态工厂.实例工厂 1.默认构造 <bean id="" class=""> 必须提供默认构造 2 ...
- Java并发控制机制
在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法.比如volatile,synchronized.像Lock和atomic这类高级并发包很多人并不经常使用.我想大 ...
- Javascript高级编程学习笔记(3)—— JS中的数据类型(1)
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...
- 基于vue的颜色选择器vue-color-picker
项目中有用到颜色选择器的童鞋们可以看过来了 关于color-picker的jquery的插件是有蛮多,不过vue组件没有吧,反正我没有找到, 虽然element-ui里面有这个,但是你愿意为了一个小功 ...
- ubuntu 16.04 搭建git小型服务器
最近搭建了一个小型git服务器,由于网上资料鱼龙混杂,让我着实踩了不少地雷.做一个记录,以备不时之需. 一 搞清楚你的需求? 假如你要搭建的服务器只供几十个人使用,并且没有专门的网管服务的话,切记,一 ...