【多圖預警】Windows 安裝 SBT、IDEA 使用 SBT 構建項目指南

      網友投稿 2299 2025-03-31

      1 - 認識 SBT


      SBT,Simple Build Tool,恰如其名,是一款簡單的、高效的、交互式的命令行構建工具。

      類似于?Apache Maven(https://zh.wikipedia.org/wiki/Apache_Maven) 和?Apache Ant(https://zh.wikipedia.org/wiki/Apache_Ant),可看成是 Scala 世界的 Maven。有如下優勢:

      ① 使用Scala作為DSL來定義build文件(one language rules them all);

      ② 通過觸發執行(trigger execution)特性支持持續的編譯與測試;

      ③ 增量編譯:SBT的增量編譯非常優秀,已經剝離為Zinc,被Eclipse、Maven、Gradle 等使用;

      ④ 可以混合構建Java和Scala項目;

      ⑤ 并行的任務執行;

      ⑥ 可以重用Maven或者ivy的repository進行依賴管理……

      — 摘自 [https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown]

      2 - 下載安裝包

      -:[https://www.scala-sbt.org/download.html]。

      Spark2x 用的是0.13.1x 版本的 SBT,這里以 1.3.8 版本為例進行演示;

      Windows 下不建議用?.msi?安裝,老實下載?.zip?或?.tgz,然后解壓縮配置吧:-)

      3 - 修改配置

      假設你安裝到了?D:\Software\sbt-1.3.8\?目錄下。依次執行下述步驟:

      3.1 配置環境變量

      新增?SBT_HOME=D:\Software\sbt-1.3.8;

      在?Path?中添加?%SBT_HOME%\bin?—— 注意不要覆蓋其他變量。

      3.2 修改 SBT 的數據目錄

      Windows 下,SBT 默認數據目錄是?%USERPROFILE%,也就是?C:\Users\UR_NAME\,為了防止重裝系統導致 C 盤數據丟失,需要修改數據目錄。

      編輯?D:\Software\sbt-1.3.8\conf\sbtconfig.txt?文件,具體為:

      #?sbt?configuration?file?for?Windows #?Set?the?java?args #-mem?1024?was?added?in?sbt.bat?as?default -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:+CMSClassUnloadingEnabled1 #?Set?the?extra?sbt?options -Dsbt.log.format=true -Dfile.encoding=UTF8 #?修改?SBT?的數據目錄: -Dsbt.boot.directory=D:/Repo/SbtBoot/.sbt/boot -Dsbt.global.base=D:/Repo/SbtBoot/.sbt -Dsbt.ivy.home=D:/Repo/SbtBoot/.ivy2 #?指定倉庫的配置文件,文件名無特殊要求: -Dsbt.repository.config=D:/Software/sbt-1.3.8/conf/repo.properties

      注意:Windows 系統的文件分隔符是?\,這里配置的分隔符是?/!

      配置項的含義,請查看:[https://www.scala-sbt.org/1.x/docs/Command-Line-Reference.html]

      3.3 修改遠程倉庫

      SBT 的默認倉庫下載巨慢,比如通過?sbt -V?查看版本號,需要下載部分包,耗時10 min 以上。

      我們在 3.2 節中指定了倉庫的配置文件,文件內容如下:

      [repositories] ?local ?aliyun:?http://maven.aliyun.com/nexus/content/groups/public ?aliyun-ivy:?http://maven.aliyun.com/nexus/content/groups/public/,??[organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

      注意:這里為了兼容 ivy 路徑的布局,額外做了配置:[organization]/.../[type]s/artifact.[ext]

      4 - cmd 中運行 SBT

      打開 cmd 終端窗口,輸入?sbt?即可啟動 SBT 服務。

      建議進入項目路徑下再運行 SBT,否則會提示當前路徑下既沒有?build.sbt?文件,也沒有?project?目錄,SBT 找不到項目,也就無法編譯運行了。

      注意:第一次執行?sbt,它會下載啟動所需要的依賴包,耗時較長。如果沒有按照 3.3 節修改 SBT 的遠程倉庫,耗時會更久。

      當窗口中出現?sbt:{DIR_NAME}>?提示符,則說明 SBT 服務已經成功啟動,如下圖:

      退出方式:在命令框中輸入?exit?即可退出:

      sbt:repo>?exit [info]?shutting?down?sbt?server

      5 - IDEA 中運行 SBT 項目

      5.1 新建 SBT 項目

      前提:已經為 IDEA 安裝了 SBT 插件。

      (1) 創建一個新的 Scala-SBT 項目:

      【多圖預警】Windows 安裝 SBT、IDEA 使用 SBT 構建項目指南

      設置項目名稱、項目路徑、SBT 版本、Scala 版本等信息,然后 [Finish]。

      查看項目配置信息:

      5.2 修改 SBT 插件的配置

      此時 IDEA 使用的應該是插件默認的 SBT,我們需要修改 SBT 的配置:

      其中 【VM parameters】中添加我們在 3.2 節中的配置,支持換行:

      -Xms1024m???? -Xmx1024m???? -Xss4M???? -XX:ReservedCodeCacheSize=128m???? -XX:+CMSClassUnloadingEnabled???? -Dsbt.log.format=true???? -Dfile.encoding=UTF8???? -Dsbt.boot.directory=D:/Repo/SbtBoot/.sbt/boot???? -Dsbt.global.base=D:/Repo/SbtBoot/.sbt???? -Dsbt.ivy.home=D:/Repo/SbtBoot/.ivy2???? -Dsbt.repository.config=D:/Software/sbt-1.3.8/conf/repo.properties

      另外,sbt-launch.jar?也要指定為我們安裝路徑下的啟動包,這里是?D:\Software\sbt-1.3.8\bin\sbt-launch.jar。

      為了方便起見,可以對所有新項目的配置做相同的修改:

      新版本 IDEA:[File] -> [Other Settings] -> [Settings for New Projects]

      舊版本 IDEA:[File] -> [Other Settings] -> [Default Settings]

      5.3 添加 Scala SDK

      SBT 加載完成后,要創建 Scala 測試類,就要先配置 Scala SDK,具體方式為:

      [File] -> [Project Structure] -> [Project Settings] -> [Libraries],添加本地的 Scala 安裝根路徑即可。比如我添加的安裝路徑是:D:\Software\scala-2.11.8。

      可選項:在?build.sbt?文件中添加項目依賴:

      (1) 不指定 Scala 庫的版本:?依賴包的組織部分?org.apache.spark?后面加兩個%號,SBT 會自動到倉庫源中根據當前項目中 Scala 的版本進行依賴的匹配,如果沒有通過?scalaVersion := "2.x.x"?指定 Scala 版本,會以 SBT 默認的 Scala 版本號為主,例如:

      libraryDependencies?+=?"org.apache.spark"?%%?"spark-core"?%?"2.4.5"

      (2) 明確指定 Scala 庫的版本:?依賴包組織部分?org.apache.spark?后面只加一個%號,例如:

      libraryDependencies?+=?"org.apache.spark"?%?"spark-core_2.12"?%?"2.4.5"

      5.4 創建、運行測試類

      若項目有個對象帶有 main 方法(或者對象繼承了 App 接口),就可以通過 run 命令在 sbt 中運行代碼。

      如果有多個 main 方法時,sbt 會向我們確認要執行哪一個。

      我們創建?HelloSbt.scala?測試類,然后在 IDEA 自帶的終端中運行?sbt run,示例如下:

      通過官方文檔的描述,我們知道:sbt 按照既定的約定工作 —— 它會自動找到以下內容:

      項目根目錄下的源文件

      src/main/scala 或 src/main/java 中的源文件

      src/test/scala 或 src/test/java 中的測試文件

      src/main/resources 或 src/test/resources 中的數據文件

      lib 中的 jar 文件

      默認情況下,sbt 會用和啟動自身相同版本的 Scala 來構建項目。

      我們可以通過執行?sbt run?來運行項目,或者通過?sbt console?進入 Scala REPL。sbt console 已經幫我們設置好了項目的 classpath,所以我們可以根據項目實際運行 Scala 代碼。

      其他配置可參考:SBT 官方文檔 (https://www.scala-sbt.org/0.13/docs/zh-cn/Hello.html)

      6 - SBT 常用命令參考

      將?src/main/resources?下的文件和?src/main/scala?以及?src/main/java中編譯出來的 class 文件打包成一個 jar 文件。

      重新加載構建定義(build.sbt,?project/*.scala,?project/*.sbt?這些文件中定義的內容)。在修改了構建定義文件之后需要重新加載。

      顯示想要看的信息,比如?show name:查看當前項目的名字,

      show libraryDependencies:查看當前項目依賴的庫。

      Scala 編譯構建 CloudBuild

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel怎么批量間隔插行(excel怎么批量間隔插行標題)
      下一篇:工作簿中數據報表很多在Excel2003中如何快速查詢所需工作表(excel2003怎么顯示工作表)
      相關文章
      国产AV旡码专区亚洲AV苍井空| 一本色道久久88综合亚洲精品高清| 亚洲AⅤ无码一区二区三区在线 | 国产亚洲综合久久系列| 亚洲成a人片在线观看久| 日本亚洲欧美色视频在线播放| 亚洲午夜无码久久久久软件| 国产亚洲sss在线播放| 亚洲一本之道高清乱码| 亚洲欧洲春色校园另类小说| 亚洲黄色免费网站| 亚洲熟妇无码爱v在线观看| 亚洲最新在线视频| 久久精品国产亚洲av麻豆蜜芽| 亚洲乱码在线播放| 伊人久久五月丁香综合中文亚洲| 亚洲五月丁香综合视频| 亚洲中文字幕久久精品蜜桃| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲国产成人精品无码区二本 | 亚洲一区二区三区偷拍女厕 | 亚洲一区二区三区国产精品无码| 亚洲国产情侣一区二区三区| 亚洲乱人伦精品图片| 久久亚洲国产成人影院| 亚洲精品乱码久久久久蜜桃| 无码天堂va亚洲va在线va| 国产精品亚洲lv粉色| 亚洲成人免费电影| 亚洲三级在线观看| 青青青亚洲精品国产| 亚洲综合精品网站在线观看| 亚洲五月综合缴情在线观看| 亚洲va无码专区国产乱码| 噜噜噜亚洲色成人网站∨| 亚洲AV无码专区在线亚| 亚洲av第一网站久章草| 亚洲天堂在线视频| 亚洲AV永久精品爱情岛论坛| 久久精品国产亚洲AV高清热| 亚洲AV无码乱码麻豆精品国产|