Windows下Scala編程環境的構建:使用SBT


概述


    上一篇簡單介紹了學習Scala編程入手時的環境構建,本文專門說明下專為Scala而生的一個Build tool的用法。

    SBT,做為一種build tool,相對於Make,Ant,Maven等來說,算是新鮮事物了。雖然它主要是配合Scala而使用,不過它的功能還是比較全面的,所以它的名稱不是Scala Build Tool,而是Simple Build Tool,即它的目標是做為一種通用的build tool。雖然名字里有Simple,其實它一點也不簡單。

    不過SBT畢竟屬於小眾的tool,本文並不打算事無巨細的說明它的全部用法。本文可以看作是對它的官網的閱讀導引和注解,以及它的簡單用法、還有與后文相關的內容。

    本文以及本系列其他文中,SBT和sbt混用。

開始


    1,訪問 https://github.com/sbt/sbt

    這是主站,訪問下方的README.md,按照Setup中的說明,可以了解從安裝到使用的完整用法。應該先大致瀏覽一遍。入手使用,本文后面會介紹。

    不過我覺得這里才是大綱。進入Setup的頁面后,點擊右上的Documentation或者Contents進入。

clipboard[1]

    下圖紅色框中的內容,講到了SBT的core concepts。

clipboard[2]

    通覽之后,會發現SBT可以用Scala語言來編寫項目管理的配置文件!這個我覺得可以為做為Scala也是一種適合DSL語言的佐證了。

    2,獲取MSI版本安裝。本文使用0.12.2。

clipboard[3]

    再次檢查環境變量的配置。MSI安裝應該已經把SBT目錄加入Path,上圖是我自己的配置。

    3,開啟cygwin,在上篇的示例目錄下直接運行sbt,進入它的交互運行方式:      

clipboard[4]

    也可以在shell下可以直接運行sbt compile/run/clean 等命令,是等價的。

clipboard[5]

    運行完sbt的命令,就會多出來一個target字目錄,其中有生成的class文件,其內容較多,這里不再說明。

    要注意一點的是,上圖不是首次運行sbt時的demo。初次運行,會自動下載和配置一些內容,所以要保證聯網。在Windows XP下,默認是會在C:\Documents and Settings\YOUR_NAME\下生成一個.sbt和一個.ivy目錄,當然也可以自己修改。當再次運行sbt,就如上圖所示了。若你刪除了".sbt"和".ivy",再次運行sbt,就會重新生成。

    可見,SBT在使用上可以很簡單,只要安裝和配置好路徑,在寫有Scala代碼的目錄下,就可以直接運行看結果了。這種方式還是主要針對初學階段的練手,若做一個真正完整的項目,還應該按照更加正規的做法。

    為什么要說明下SBT的基本用法,因為后面說明IntelliJ IDEA下的配置時,會用到SBT。

    4,根據SBT的文檔,建立項目文件結構:(此小節開始的內容是獨立的,后面只是說明下,實際不大會用到。)

clipboard[6]

    其中必須有一個子目錄被命名為“project”,build.properties和plugins.sbt要放在其中,所以這個子目錄可以理解為存放於項目管理相關的配置文件用的。另外,sbt的配置文件中二行之間要空一行的,上面提到sbt的配置文件也可以用scala語言來寫,但這種配置文件沒有必須空一行的要求。

    這里我們關注那個plugins.sbt。其中我加了2個plugins: sbt-android-pluginsbt-idea。它們的官方網是:

https://github.com/jberkel/android-plugin

https://github.com/mpeltonen/sbt-idea

    是怎么知道它們的呢?線索來自google,查找“scala on android”可以查到下面的一些鏈接:

http://stackoverflow.com/questions/4433388/intellij-idea-android-scala-application

http://nevercertain.com/2011/02/03/scala-android-intellij-win-part-1-prerequisites.html

http://nevercertain.com/2011/02/03/scala-android-intellij-win-part-2-simple-build-tool.html

http://nevercertain.com/2011/02/18/scala-android-intellij-win-part-3.html

    在第一個stackoverflow中,可知一些線索。然后是比較全面的3篇博文,介紹scala on android的配置。

    不過,遺憾的是,內容已經不夠新了。其中提到的sbt-android-plugin中的create_project,在它最新的版本中已經不存在了,只有0.5.1(含)之前的tag中才能找到。

    sbt-android-plugin的作用是為sbt提供一些可以操作android的命令的命令,包括創建android項目、啟動android emulator、打包等等。

    在最新的說明中,開始使用g8等工具創建android項目。我在windows下配置失敗。參考鏈接:

https://github.com/jberkel/android-plugin/wiki/Projects-using-sbt-android-plugin

    其中是一些使用了這個插件的項目,可以參考下那個Android scala installer項目的源代碼,看看實際使用sbt管理的項目結構和配置文件是怎樣的。

    而sbt-idea的作用是為sbt提供創建IDEA項目文件的命令,用來創建IDEA的項目文件,然后可以用IDEA直接打開一個已存在的IDEA項目。實踐證明,若項目中只有scala源代碼,IDEA(12.0)是無法通過掃描源代碼來創建scala項目的,這說明現在IDEA的scala插件還不支持

clipboard[7]

clipboard[8]

    上2張圖演示了下這個插件的使用,中間省略了一些內容。和上面運行之前的目錄結構相比,多出了一些目錄,還有很多的文件,這里不用細說。

    其實對於sbt-android-plugin,還有一個替代者:sbt-android-sdk-plugin,官網是:

https://github.com/pfn/android-sdk-plugin

    其中也有說明它跟sbt-android-plugin的比較。其用法,也是在plugins.sbt中增加一些內容,然后需要聯網下載使用。

    5,接下來,就有了一些問題:

    1)為什么不用android自帶的工具來創建android項目呢?要用sbt的插件?

    2)就算IDEA無法直接導入已存在的源代碼,為什么不用IDEA直接創建Scala項目呢?sbt-idea插件創建的IDEA項目文件也不一定更跟得上IDEA的更新。

    我覺得這些插件存在的意義,是在sbt這個框架下。顯然,使用Android自帶的工具以及直接使用IDE導入/創建,要比這些插件更有保證。其實更進一步說,我們后面沒有必要直接使用SBT這個工具。

    既然實際用不上,為何本文還要說明下呢?因為在IDEA中,還是有賴於它的,后面關於使用IDEA的文章中會看到,所以做為后文的一個基礎,才有了本文。

    下一篇,就開始介紹使用IDEA了。

返回索引


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM