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/central
alirepo2:https://maven.aliyun.com/repository/jcenter
alirepo3:https://maven.aliyun.com/repository/public
- 使用360壓縮打開
sbt-launch.jar
,找到sbt.boot.properties
文件並替換
方案二
配置sbt的數據源,讓其優先加載我們配置的數據源
- 在
D:\ProgramFile\sbt\conf
目錄下,新建文件repository.properties
- 在
repository.properties
中添加以下內容
[repositories]
local
alirepo1:https://maven.aliyun.com/repository/central
alirepo2:https://maven.aliyun.com/repository/jcenter
alirepo3: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
參考鏈接