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
參考連結
https://www.scala-sbt.org/0.13/docs/Proxy-Repositories.html
https://segmentfault.com/a/1190000002484978