文档章节

Scala构建工具(SBT)教程

openthings
 openthings
发布于 2015/12/24 11:10
字数 1114
阅读 536
收藏 1

我们使用 sbt 创建、测试、运行和提交作业。该教程会解释你在我们的课程中将会用到的所有 sbt 命令。工具安装页说明了如何安装 sbt。

启动 sbt

要启动 sbt,打开一个终端(Windows 中的”命令提示符“)并切换到你正在解决的作业所在目录。输入sbt 将会打开 sbt 命令提示符。

                                        #这是 sbt 的壳

运行 Scala 解释器

你可以使用 console 任务在 sbt 内启动 Scala 解释器。解释器(也叫做 REPL,代表”读算印复 (Read Eval Print Loop“)对于试验 Scala 代码小片段很有用。注意,只有当你的代码没有编译错误时,解释器才能启动。

要退出解释器并返回 sbt,输入 ctrl-d

> console[info] 正在启动 Scala 解释器...
欢迎来带 Scala 版本 2.10.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_04-ea).
输入表达式得到运算值。
输入 :help 获取更多信息。

scala> println("Oh, hai!") # 这是Scala解释器,输入一些代码
Oh, hai!

scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)

scala> val squares = l.map(x => x * x)
squares: List[Int] = List(1, 4, 9)

scala>                      # 输入Ctrl + D退出Scala解释器
[success] Total time: 20 s, completed Mar 21, 2013 11:02:31 AM
>                           # 我们回到 sbt 壳

编译你的代码

compile 任务会编译作业的源代码,作业位于src/main/scala 目录。

> compile[info] 正在编译4个Scala源文件到
       /Users/aleksandar/example/target/scala-2.10.1/classes...
[success] 总用时: 1秒,完成时刻 2013年5月21日 下午 11:04:46
>

如果源代码中包含错误,来自编译器的错误信息会显示出来。

测试你的代码

src/test/scala 目录包含项目的单元测试。要在 sbt 中运行这些测试,你可以使用test命令。

> test[info] ListsSuite:
[info] - one plus one is two
[info] - sum of a few numbers *** FAILED ***
[info]   3 did not equal 2 (ListsSuite.scala:23)
[info] - max of a few numbers
[error] 失败: 总计 3, 失败 1, 错误 0, 通过 2, 忽略 0
[error] 失败的测试:
[error]   example.ListsSuite
[error] {文件:/Users/luc/example/}assignment/test:test: 测试不成功
[error] 总用时: 5 秒, 完成时刻 2012年8月10日 晚上 10:19:53
>

运行你的代码

如果你的项目有个对象带有方法(或者对象继承了 App 品质(trait)),那么你就可以通过输入 run 在 sbt 中运行代码。在 sbt 发现有多个 main 方法时,它会询问你想执行哪一个。

> run多个 main classes 给检测到,选择一个执行:

 [1] example.Lists
 [2] example.M2

输入号码: 1[info] 运行 example.Lists 中
main method!
[success] 总用时: 33 秒, 完成时刻 2012年8月10日 晚上 10:25:06
>

运行样式检查器

在作业评分过程中,我们在你提交的源代码上运行样式检查器以发现常见的编码样式问题。要确保你的代码符合我们的全部样式规则,你可以在提交前运行样式检查器自己检查。sbt 的styleCheck任务执行如下。

> styleCheck[info] 正在检查文件 /Users/luc/Documents/epfl/
       teaching/progfun/assignments/
       src/main/scala/example/Lists.scala... 没问题!
[info] 处理 1 文件(s)
[info] 发现 0 错误(s)
[info] 发现 0 警告(s)
[info] 样式得分: (百分之)100
[success] 总用时: 1 秒, 完成时刻 2012年8月10日 晚上 11:34:02
>

提交你的解答到 Coursera

sbt 的submit任务用于你提交作业的解答。它会将你的源代码打包到一个.jar文件,然后上传到Coursera的服务器。注意,只有代码中没有编译错误时,代码才会被提交。

submit任务接收两个参数:你的电子邮件地址和提交密码。注意:提交密码不是你的登录密码。相反,它是由Coursera生成的特殊密码。你可以在Assignments页中找到。

> submit e-mail@university.org suBmISsioNPasSwoRd
[info] 正在打包 /Users/luc/example/
       target/scala-2.10.1/
       progfun-example_2.10.1-1.0.0-sources.jar ...
[info] 打包完成。
[info] 编译 1 个 Scala 源文件 到 /Users/luc/example/
       target/scala-2.10.1/classes...
[info] 正在连接到 coursera。获取 challenge中...
[info] 计算 challenge 响应中...
[info] 提交作业中...
[success] 你的代码被成功提交:你的提交已被接收,之后将会批改。
[success] 总用时: 6 秒, 完成时刻 2012年8月10日 下午 10:35:53
>

    创建于2012年8月11日(周六)北京时间 凌晨 1:13
    修改于2013年3月22日(周五)北京时间 凌成 2:00



本文转载自:http://article.yeeyan.org/view/433044/378612

openthings
粉丝 320
博文 1129
码字总数 675031
作品 1
东城
架构师
私信 提问
SPARK学习之 --- eclipse / sbt / scala 配置

工作以及兴趣所致,开始了spark学习之旅,浏览网上大牛们的博客 文章,并且结合官网docs,刚开始云里雾里,现在也能雾里看到点花了。 学习spark,首先我们知道spark是由scala语言编写而成,至...

莫问viva
2016/01/12
2.6K
0
我们为什么放弃SBT回归Maven

显然,我是在说Scala项目。在我们讨论这个话题时,SBT的稳定版本是0.13,我想再过几年,本文提及的问题会一一得到解决,从而让SBT成为一个真正成熟强大的构建工具。 在我们目前开发的系统中,...

bluishglc
2017/02/27
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(4)

此时重启IDEA: 此时重启IDEA: 重启后进入如下界面: Step 4:在IDEA中编写Scala代码: 首先在进入在我们前一步的进入界面中选择“Create New Project”: 此时选在左侧列表中的“Scala”选项...

Spark亚太研究院
2014/09/22
295
0
sbt笔记八 scala构建定义

.scala构建定义(sbt 0.13.0 Snapshot) 当前页面假定你已经阅读了Getting Started Guide的前面章节,尤其是.sbt build definition和more about settings。 sbt是递归的 build.sbt非常简单,...

Ellipse
2013/04/06
2K
0
Scala入门之工具篇

我初次接触Scala时,由于对Scala相关的工具不够熟悉,学习的效率低下。所以本文主要介绍Scala编程所必备的工具。一般而言,我们接触一门编程语言,都需要接触这门语言的编译器、REPL、构建工...

碎镜
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
18分钟前
2
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
19分钟前
1
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
48分钟前
36
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
50分钟前
2
0
go-micro 入门教程1.搭建 go-micro环境

微服务的本质是让专业的人做专业的事情,做出更好的东西。 golang具备高并发,静态编译等特性,在性能、安全等方面具备非常大的优势。go-micro是基于golang的微服务编程框架,go-micro操作简单...

非正式解决方案
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部