了解、安装sbt,使用sbt(console、IDEA)以及IDEA中打包spark的jar包

本文测试环境: 
● Win10 
● Scala-2.12.3 
● Spark-2.2.0 
● Sbt-1.0.0 
● JDK-1.8 
● IDEA-2017.1.4 
● Git(IDEA下载SBT插件时可能会用到) 
● 2017/8/26(文章写完一直忘了发到博客上)

  • 我在配置IDEA+scala&sbt的过程中走了不少弯路,所以记录一下配置的过程,希望对新手有所帮助。
  • 官方目前主要维护的版本有两个:0.13.X和1.X。需要注意的是,IDEA上的SBT插件暂时是随着0.13.X系列更新的,而我本地是1.0.0,不知以后会不会出现写莫名的问题。
  • 建议安装前多看看:官方文档;pdf503页
  • 极客学院的0.13.15的:中译版;pdf仅62页 
    (注:本人刚接触sbt,文中有什么错误的地方欢迎指正,一起学习)

目录:

一、sbt简介&为什么使用sbt

一.sbt简介&为什么使用sbt: 
● 简介:SBT是一个现代构建工具。它是用Scala编写的,并且针对Scala也提供了很多方便快捷的功能。它也是一个通用的构建工具。 
● 为什么:基于scala构建,可以充分的、灵活的使用scala代码 
对于简单的项目,需要很少或根本不需要配置 
连续编译(连续执行命令),打包和部署jar 
生成文件和scaladoc 
对Scala / java混合项目的支持 
支持使用ScalaCheck,specs, 和ScalaTest进行测试 
使用项目的类文件和依赖运行scala REPL(scala的编译器)(注:原文为:Starts the Scala REPL with project classes and dependencies on the classpath) 
强大的依赖管理功能 
子项目的模块化支持 
外部项目的支持(需要配置一个Git仓库作为依赖!) 
并行的执行任务,包括并行测试执行 
支持库(library)管理:内部申明,外部Ivy或者Maven的配置文件,或者手动管理 
(注:建议看完官方入门指南)(页面中有中文的,但是请注意中文的只翻译了一部分)地址:http://www.scala-sbt.org/1.x/docs/index.html

二、sbt安装

二、sbt安装(Windows) 
1. 在sbt官网http://www.scala-sbt.org/download.html,目前最新版为1.0.0(2017/8/26)。我下载的压缩包,添加SBT_HOME。将解压目录的bin目录加入path环境 
2.先别在命令行执行sbt console启动sbt,相关jar包默认会下载到C:\Users\Administrator.sbt(重装系统就没了)。 
关于conf下的 sbtconfig 和 sbtopts,我找到网上的3种可能正确的说法(或者都没什么错),看了sbt.bat 的shell脚本也没有拿定主意。希望知道的朋友可以解答以下: 
1. 若是windows系统,则只会使用conf下的sbtconfig.txt,不会用到sbtopts。 
2. conf/sbtconfig.txt: sbt的配置文件:在这里我们可以配置代理。 
conf/sbtopts:也是sbt的配置文件,主要包含配置设置ivy和boot的地址 
3. stackoverflow上的:

我认为:sbtconfig.txt只有Windows用户可用,而Windows用户可以将代理信息以及ivy和boot的地址,JVM参数等配置都写在sbtconfig.txt。以下是我的配置:(注:最开始我设置了-Dfile.encoding=UTF-8,反而中文乱码,建议大家不写;MaxPermSize在JDK1.8之后已经不再使用。) 
.# Set the java args to high

-Xms128m

-Xmx1024M

.# -XX:PermSize=128m

.# -XX:MaxPermSize=256m

-XX:ReservedCodeCacheSize=128m

扫描二维码关注公众号,回复: 42407 查看本文章

.# Set the extra SBT options

-Dsbt.log.format=true

.# mydiv

-Dsbt.repository.config=C:\Users\Administrator.sbt\repo.repositories

-Dsbt.boot.directory=D:\sbt\mysbt\boot

-Dsbt.ivy.home=D:\sbt\mysbt\ivy

-Dsbt.repository.secure=false

注: 
● 前几项是Java虚拟机的相关配置; 
● -Dsbt.repository.secure=false 是否使用https协议获取依赖信息,感觉国内还是不开吧,体验更好。。。 
● -Dsbt.ivy.home:配置vy的文件目录,ivy是sbt的默认管理项目依赖工具(下载的依赖都会保存在这里配置的目录下,和Maven的本地仓库一个道理) 
● -Dsbt.repository.config : C:\Users\Administrator.sbt下创建repositories文件:(注:因为使用的markdown编辑的文章,暂不知如何将‘#’转义,故在每个‘#’注释符前加了‘.’) 
[repositories] 
[repositories] 
local 
nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public 
.#typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/artifact.[ext] 
.#typesafe2: http://repo.typesafe.com/typesafe/releases/ 
.#sbt-plugin: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/ 
.#sonatype: http://oss.sonatype.org/content/repositories/snapshots 
.#uk_maven: http://uk.maven.org/maven2/ 
.#repo2: http://repo2.maven.org/maven2/

成功后的各个目录如下: 
● .sbt目录 
这里写图片描述 
● sbt执行成功 
这里写图片描述 
● boot文件夹 
这里写图片描述 
● ivy2文件夹 
这里写图片描述 
● sbt console

三、console中使用sbt

1.常用的的 sbt 命令

这里写图片描述
sbtVersion:查看当前sbt版本 
actions : 显示对当前工程可用的命令 
publish-local : 把构建出来的jar包安装到本地的ivy缓存 
publish : 把jar包发布到远程仓库(如果在git中配置了的话) 
show name :查看当前项目的名字。 
show libraryDependencies :查看当前项目依赖的库。

2.最好在预想的项目根目录下面执行的sbt命令!

最简单的测试代码: 
● 随便建立一个文件夹,作为你项目的根目录,再建立一个scala文件:我的scala文件内容如下: 
● cmd进入项目根目录,sbt—》run(注:会警告说没有设置sbt.version 因为我们还没有在工程目录hello下创建project\build.properties并设置sbt.version。) 
这里写图片描述

3.完整的目录结构: 
(在sbt0.7.x, 我们只要创建项目目录,然后在项目目录下敲入sbt,sbt会自动为我们生成需要的目录和文件, 而sbt 0.10之后,如果不适用IDE,我们需要自己创建生相应的目录和文件) 
这里写图片描述 
(注:手动创建目录后,再次编译运行scala文件,在project文件夹下还会生成一个target文件夹,与工程目录hello下的target文件夹几乎一样。感觉这与sbt的迭代式构建是有关系的) 
官网截图: 
这里写图片描述 
解释:sbt 将会自动找到以下内容: 
● 项目根目录下的源文件 
● src/main/scala 或 src/main/java 中的源文件 
● src/test/scala 或 src/test/java 中的测试文件 
● src/main/resources 或 src/test/resources 中的数据文件 
● lib 中的 jar 文件 
4. SBT支持两种使用方式: 
● 交互模式 
执行 sbt 不跟任何命令行参数将会进入交互模式。交互模式有一个命令行(含有 tab 自动补全功能和历史记录)。 
例如,在 sbt 命令行里输入 compile: 
compile

再次 compile,只需要按向上的方向键,然后回车。 输入 run 来启动程序。 输入 exit (建议)或者 Ctrl+D (Unix-like)或者 Ctrl+Z (Windows)可以退出交互模式。

(注:管理员权限sbt console进入scala命令行,可以使用“;”进行多行输入;也可以使用“:paste”命令进入粘贴模式,键入”Ctrl—D“解释执行代码): 
这里写图片描述 
● 批处理模式 
你也可以用批处理模式来运行 sbt,可以以空格为分隔符指定参数。对于接受参数的 sbt 命令,将命令和参数用引号引起来一起传给 sbt。

四、IDEA中使用sbt,并打包jar

详见我的另一篇文章:见我的这篇文章

猜你喜欢

转载自blog.csdn.net/leo3070/article/details/80040106