Scala 基础(二):sbt介绍与构建Scala项目
一、sbt简介
sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。
主要特性:
- 原生支持编译Scala代码和与诸多Scala测试框架进行交互;
- 使用Scala编写的DSL(领域特定语言)构建描述
- 使用Ivy作为库管理工具
- 持续编译、测试和部署
- 整合scala解释器快速迭代和调试
- 支持Java与Scala混合的项目
二、sbt安装
在sbt官网下载,这里我是下载的sbt-0.13.11.zip,下载后加压到自己定义的文件夹,然后将解压目录的bin目录加入PATH环境
Linux环境,使用`sudo vim /etc/profile`打开配置文件,添加下面的命令
export SBT_HOME=/opt/sbt
export path=path:$SBT_HOME/bin
Windows环境,打开高级系统设置,在环境变量中添加系统变量
SBT_HOME => D:\sbt
并加入path路径,
path=> path;%SBT_HOME%\bin
安装完成后,检验是否安装成功。
使用sbt命令,该命令会执行一段时间,下载jar包,加载插件,最后查看是否进行交互界面,如下图所示
C:\Users\test>sbt
[info] Loading global plugins from C:\Users\test\.sbt\0.13\plugins
[info] Set current project to test(in build file:/C:/Users/test/)
>
sbt的简单配置
配置ivy目录
可以对sbt进行配置,能够配置ivy的文件目录,ivy是sbt的默认管理项目依赖工具,它默认是在user home下建立library repository,但用户可以配置ivy的library local repository。
修改sbt配置文件: [sbt安装目录]/conf/sbtconfig.txt,在配置文件中添加一行
-Dsbt.ivy.home=[你自己挑选的目录]/repository
配置库
感觉sbt运行时会从maven官网下载大量的jar包,可能会非常缓慢,可以添加国内的maven库,从而能够加快运行速度,在”~/.sbt”下创建repositories文件,添加下面的内容:
[repositories]
local # 本地ivy库
maven-local: file://~/.m2/repository # 本地Maven库
osc: http://maven.oschina.net/content/groups/public/ #开源中国的maven库,用于加快速度
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有自己的插件,这里介绍能够生成eclipse目录的插件:sbteclipse插件https://github.com/typesafehub/sbteclipse。
添加sbteclipse插件可以通过两种方式添加:
- 配置全局文件:~/.sbt/0.13/plugins/plugins.sbt
- 配置项目文件: PROJECT_DIR/project/plugins.sbt
在其中一个文件添加一行
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
安装sbteclipse插件后可以在sbt交互界面使用`eclipse`命令生成eclipse项目
三、sbt构建Scala项目
简单构建Scala项目
创建文件SimpleProject/hw.scala
object Hi{
def main(args: Array[String]) = println("Hello world!")
}
运行
D:\MyCode\Scala\SimpleProject>sbt
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading global plugins from C:\Users\test\.sbt\0.13\plugins
[info] Set current project to hello (in build file:/D:/MyCode/Scala/SimpleProject/)
> run
[info] Updating {file:/D:/MyCode/Scala/SimpleProject/}root...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to D:\MyCode\Scala\BuildProject\target\scala-2.10\classes...
[info] Running Hi
Hello world!
[success] Total time: 43 s, completed 2016-4-9 20:16:21
构建Scala完整项目
sbt项目目录与Maven项目目录类似,创建下面的目录
├── src
│ ├── main
│ │ ├── java
│ │ ├── resources
│ │ └── scala
│ ├── test
│ │ ├── java
│ │ ├── resources
│ │ └── scala
├── build.sbt
├── project
│ ├── build.properties
│ ├── plugins.sbt
其中bulid.sbt为构建定义,project目录是你的工程内另一个工程的项目,它知道如何构建你的工程,即project项目为元构建,相关文档为http://www.scala-sbt.org/0.13/docs/zh-cn/Organizing-Build.html。
简单的bulid.sbt文件
name := "hello" // 项目名称 organization := "xxx.xxx.xxx" // 组织名称 version := "0.0.1" // 版本号 scalaVersion := "2.10.6" // 使用的Scala版本号 // 添加项目依赖
libraryDependencies += "ch.qos.logback" % "logback-core" % "1.0.0" libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.0" // 或者 libraryDependencies ++= Seq(
"ch.qos.logback" % "logback-core" % "1.0.0",
"ch.qos.logback" % "logback-classic" % "1.0.0",
...
) // 添加测试代码编译或者运行期间使用的依赖
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.8" % "test")
创建项目目录并添加配置文件完成后,生成eclipse项目:在项目基目录下运行下列命令
sbt eclipse
通过上面的命令能够生成eclipse目录,使用eclipse导入项目,即可开始开发。
四、sbt的交互模式
在项目目录下运行sbt命令进行交互模式
sbt
在交互模式中能够运行常见的命令,例如,进行compile:
> compile
其它常见命令
clean | 删除所有生成的文件 (在 target 目录下)。 |
compile | 编译源文件(在 src/main/scala 和 src/main/java 目录下)。 |
test | 编译和运行所有测试。 |
console | 进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。 |
run <参数>* | 在和 sbt 所处的同一个虚拟机上执行项目的 main class。 |
package | 将 src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。 |
help <命令> | 显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。 |
reload | 重新加载构建定义(build.sbt, project/*.scala, project/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。 |
Scala 基础(二):sbt介绍与构建Scala项目的更多相关文章
- sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
- Scala 基础(十四):Scala 模式匹配(二)
1 匹配数组 1)Array(0) 匹配只有一个元素且为0的数组. 2)Array(x,y) 匹配数组有两个元素,并将两个元素赋值为x和y.当然可以依次类推Array(x,y,z) 匹配数组有3个元素 ...
- Scala 基础(十五):Scala 模式匹配(三)
1 变量声明中的模式 match中每一个case都可以单独提取出来,意思是一样的. 应用案例 val (x, y) = (1, 2) val (q, r) = BigInt(10) /% 3 //说明 ...
- 快速入门Maven(二)(Eclipse构建Maven项目)
Mars2的eclipse()已经集成了Maven插件,所以用这个版本不需要装插件了. 接下来构建: 一.调整Eclipse设置 1.选择3.3.9版本的maven软件 2.修改默认的本地仓库地址 二 ...
- scala 基础知识总结
在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...
- Eclipse+Maven构建web项目及部署时Maven lib依赖问题的解决
目录 Eclipse中m2e插件构建web项目的步骤 Maven工具构建web项目再导入Eclipse的步骤 [一].Eclipse中m2e插件构建web项目的步骤 第一步:创建项目,按照 New – ...
- scala函数式编程(二) scala基础语法介绍
上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些ja ...
- SBT 构建scala eclipse开发
scala eclipse sbt 应用程序开发 搭建Eclipse开发Scala应用程序的一般步骤 一.环境准备: 1.Scala : http://www.scala-lang.org/ 2.Sc ...
- 使用SBT构建Scala应用(转自git)
# 使用SBT构建Scala应用 ## SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣, ...
随机推荐
- C++值元编程
--永远不要在OJ上使用值元编程,过于简单的没有优势,能有优势的编译错误. 背景 2019年10月,我在学习算法.有一道作业题,输入规模很小,可以用打表法解决.具体方案有以下三种: 运行时预处理,生成 ...
- 效率思维模式与Zombie Scrum
Scrum是由Ken Schwaber和Jeff Sutherland在20世纪90年代提出的概念,并在1995年首次正式确定.起初Scrum是为了解决产品和软件开发固有的复杂性,然而现在Scrum被 ...
- ADB命令 使用
简介 ADB,即 Android Debug Bridge ,它是 Android 开发/测试人员不可替代的强大工具 .安卓调试桥 (Android Debug Bridge, adb),是一种可以 ...
- 谈谈我对 Flutter 未来发展 和 “嵌套地狱” 的浅显看法
Flutter 未来发展 提到 Flutter 就不得不提到 Fuchsia 系统,这是一个尚未正式发布的操作的系统,引用 Android 和 Chrome 的高级副总裁 Hiroshi Lockhe ...
- vwware虚拟机网卡的三种模式
这里在虚拟机中必须要保证右上角的两个勾选上 三种模式:简单一个比如宿主机器直接连接路由器上网,那虚拟机和宿主机器是一定的可以上外网,相当于虚拟机直接连接在路由器上面,虚拟机需要配置可以上外网的IP地址 ...
- DNS区域传输和DNS字典爆破
nslookup命令是已知域名的的解析记录下进行的查询.打个比方,已知sina.com这个域名有www.sina.com这条主机解析记录,就可以查询www.sina.com对应的ip以及其他相关信息. ...
- 同步/异步/阻塞/非阻塞/BIO/NIO/AIO各种情况介绍
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...
- Code Walkthroughs Table API
上级:https://www.cnblogs.com/hackerxiaoyon/p/12747387.html Table API Table api 有批量的api和流实时的api.通常很容易进行 ...
- Python3-算法-冒泡排序
冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成,这个算法的名字由来是因为越大的元素 ...
- app之功能测试
1 什么是APP测试? App测试就是软件工程师对这类应用软件进行功能测试,性能测试,安全性测试以及兼容性测试等. 对于app测试我们一般采用的是黑盒测试方法,也会在必要的时候进行自动化测试以及性能测 ...