sbt安装
环境
java 1.8
scala 2.12.6
sbt 1.2.1
idea2.18.3
软件
idea sbt
插件idea scala
插件- sbt安装包
https://sbt-downloads.cdnedge.bluemix.net/releases/v1.2.1/sbt-1.2.1.msi
,非必须,可直接使用idea的sbt插件做对应配置
安装sbt
- 新建sbt安装路径,注意:sbt安装路径中不能含有空格和中文,将
sbt-1.2.1.msi
安装到此路径。 - 配置环境变量
- 新建变量sbt
SBT_HOME D:\ProgramFile\sbt
- 添加变量到path中
%SBT_HOME%bin;
配置文件
修改文件onf/sbtconfig.txt
,添加以下内容
-Dfile.encoding=UTF8
sbt仓库设置
方案一
直接修改sbt的jar里面的配置文件。windows
下可通过360压缩替换掉jar
包里面的文件。
- 找到sbt安装目录
D:\ProgramFile\sbt\bin
- 备份
sbt-launch.jar
为sbt-launch.jar.bak
- 解压
sbt-launch.jar.bak
,打开个sbt.boot.properties
文件 - 在
[repositories]
里面的local
下面添加以下数据源
alirepo1:https://maven.aliyun.com/repository/centralalirepo2:https://maven.aliyun.com/repository/jcenteralirepo3:https://maven.aliyun.com/repository/public
- 使用360压缩打开
sbt-launch.jar
,找到sbt.boot.properties
文件并替换
方案二
配置sbt的数据源,让其优先加载我们配置的数据源
- 在
D:\ProgramFile\sbt\conf
目录下,新建文件repository.properties
- 在
repository.properties
中添加以下内容
[repositories]localalirepo1:https://maven.aliyun.com/repository/centralalirepo2:https://maven.aliyun.com/repository/jcenteralirepo3:https://maven.aliyun.com/repository/public
- 在
conf/sbtconfig.txt
中添加repository.properties
文件路径
-Dsbt.repository.config=D:/ProgramFile/sbt/conf/repository.properties
添加依赖build.sbt
在项目中找到build.sbt
文件,此类似于maven
中的pom
文件 添加spark-core
和spark-sql
等的依赖
name := "sbt-test" // 项目名称version := "0.1" // 项目版本号scalaVersion := "2.11.12" // scala版本号// 依赖libraryDependencies ++= Seq( "org.apache.spark" %% "spark-core" % "2.2.0", "org.apache.spark" %% "spark-sql" % "2.2.0", "com.typesafe.scala-logging" % "scala-logging-slf4j_2.11" % "latest.integration")
下载依赖
通过以下方式打开执行命令窗口
- 在
build.sbt
同级目录下打开cmd
窗口 - 在
idea
中打开Termail
窗口
下载或更新jar
sbt update
编译文件
sbt compile
打包
sbt package
问题处理
版本不兼容
jdk不兼容
idea2018
需要jdk8
以上spark2.0
需要jdk8
以上
文件下载缓慢
idea
控制台build
界面一直在转圈,并提示dump project structure from sbt
这里需要注意,在Intellij Idea
启动时,会执行dump project structure from sbt
的操作,也就是把sbt所需要的项目结构从远程服务器拉取到本地,在本地会生成sbt所需要的项目结构。由于是从国外的远程服务器下载,所以,这个过程很慢,笔者电脑上运行了15分钟。这个过程没有结束之前,上图中的File->New
弹出的子菜单是找不到Scala Class
这个选项的。所以,一定要等dump project structure from sbt
的操作全部执行结束以后,再去按照上图操作来新建Scala Class
文件。
修改sbt数据源
不靠谱方案
- 将数据源改为
maven.oschina.com
。此数据源已经失效 - 将
sbt.boot.properties
中的https
改为http
。未生效 - 在
sbt
的vm
中配置-Dsbt.override.build.repos=true
。此方法效果和-Dsbt.repository.config=D:/ProgramFile/sbt/conf/repository.properties
一致,前提是需要配置数据源 - 最笨方案,下载jar包,放到本地仓库
C:\Users\sustcoder\.ivy2\cache
修改成阿里云数据源后依旧下载失败
- 配置的
sbt
版本在阿里云的仓库中没有。排查办法:可以去maven.aliyun.com
去查看对应版本pom文件是否存在 - 在阿里云上找到了对应版本但依旧保持。注意查看日志信息中下载的jar包路径含有
_2.10
类似的字样,比如在build.sbt
中配置的是"org.apache.spark" %% "spark-sql" % "2.2.0"
,但是日志里面是[warn] :: com.typesafe.scala-logging#scala-sql_2.10;2.1.2: not found
,这个是因为sbt里面的%%
代表sbt默认会拼接上scala的版本号在pom文件上,下载最适合的jar包,可以将%%
改为%
,即改为"org.apache.spark" % "spark-sql" % "2.2.0"
,注意区别:仅仅是少了一个百分号。 - 执行
sbt-shell
会走默认的仓库配置,需要在sbt的vm参数中配置-Dsbt.override.build.repos=true
????
查看配置参数是否生效
可在日志控制台查看第一行日志,查看配置参数是否生效,走的是自己安装的sbt还是idea的插件,如下日志,在sbtconfig.txt
中配置信息会进行加载
"C:\Program Files\Java\jdk8\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=localhost:58502,suspend=n,server=y -Xdebug -server -Xmx1536M -Dsbt.repository.config=D:/develop/sbt/conf/repository.properties -Didea.managed=true -Dfile.encoding=UTF-8 -Didea.runid=2018.2 -jar D:\ProgramFile\sbt\bin\sbt-launch.jar idea-shell
参考链接