哪個構建工具最適合Scala?他們每個人的優點和缺點是什麼?如何確定在項目中使用哪一個?在Scala項目中使用sbt vs maven的優缺點
回答
我們使用Maven在工作中構建Scala項目,因爲它與我們的CI服務器很好地集成在一起。當然,我們可以運行一個shell腳本來啓動一個構建,但是我們還有很多來自Maven的其他信息,我們希望進入CI。這就是我可以考慮將Maven用於Scala項目的唯一原因。
否則,只需使用SBT。你可以訪問相同的依賴關係(真的是關於maven的最好的部分,恕我直言)。你也可以得到增量編譯,這是巨大的。能夠在你的項目中啓動一個shell,這也很棒。
ScalaMock只適用於SBT,你可能會想要使用它而不是Java模擬庫。最重要的是,它的很多更容易擴展SBT,因爲你可以在構建文件中編寫完整的scala代碼,所以你不必經歷編寫Mojo的所有細節。
總之,只要使用SBT,除非您確實需要緊密集成到您的CI服務器。
我不同意上面的任何一個,但只是想指出我正在寫[ScalaMock 3](http:// www。 paulbutcher.com/2012/06/scalamock-3-0-preview-release/),其中一個主要目標是使其他構建系統更容易支持。 –
太好了,因爲我不確定我將能夠很快在工作中使用SBT。期待它! – mblinn
爲了完整起見,值得一提的是,只要您不需要使用生成的模擬(即只要您只需要模擬,ScalaMock 2就可以在任何*構建系統(它只是一個jar)性狀/接口)。 –
這個問題有可能產生很多意見;最好有清晰的要求清單或描述你的環境,以前的知識等。
FWIW,在this scala mailing list thread有更多的意見。
我2C是:與SBT去,如果你沒有特殊要求
- 簡單的項目,這是完全不費力(你甚至不需要構建文件,直到你有依賴)
- 它通常在Scala開源項目中使用。您可以通過查看其他人的項目輕鬆瞭解配置。此外,許多項目假設您使用sbt併爲您提供ready-made copy+paste instruction以將它們作爲依賴項添加到您的項目中。
- 如果您使用IntelliJ IDEA,它可以完全集成。你可以通過have IDEA use sbt來連續編譯你的項目,反之亦然,你可以使用sbt來快速地generate IDEA projects。如果你處於'快照'週期,取決於你自己的其他庫從次要版本跳轉到次要版本,最後一個特別有用 - 只需關閉項目,更新構建文件中的版本,重新運行
gen-idea
任務,並重新打開項目:完成更新。 - 自帶願與你最需要的任務(
compile
,test
,run
,doc
,publish-local
,console
) - 的console
是最好的功能之一。 - 有些人強調了依賴可以直接從GitHub獲取的源代碼庫的功能。我沒有用過這個,所以不能在這裏評論。
有些人討厭SBT,因爲它使用的Ivy依賴管理(我不能對其利弊進行評論,但大部分時間,它是一個非問題),有些人討厭SBT,因爲您指定的根據Scala DSL而不是XML構建文件。有些人對sbt的格式從v0.7更改爲v0.10感到失望,但顯然,如果您從頭開始,遷移不會影響您。
我恨SBT,因爲它濫用象徵運營商和一些愚蠢的決定,比如都支持名.bst和.scala清晰度格式的,但把它們放在不同的位置,並在名.bst報表必須由至少空行等分開sbt的文件正在改進,但目前還不夠好。我最想念的是一些完整的(最小到現實世界的複雜).sbt/.scala示例文件,逐行解釋,涵蓋所有sbt功能。也就是說,我每天都會使用sbt,因爲Maven會吸收更多。 – xiefei
太糟糕了,這個問題被關閉,我相信有實際的差異,以及:例如本文節選自曼寧本書SBT:「如果有Maven目標(比如一個目標產生被消耗的文件之間 依賴另一種),那麼你不能 與Maven並行化編譯。 隨着SBT,你必須指定任務之間的顯式依賴,這使得SBT並行運行 任務默認情況下,如果任務A依賴於B和C也取決於B,然後運行任務B,然後在 的並行運行A和C.「希望這個評論有助於一些讀者。 – jhegedus
我發現這個線程非常有用。我經常認爲Stackoverflow版主過於熱切地關閉了主題。誰在乎他們是否「脫離主題」,當他們經常是用戶正在尋找的東西(並通過網絡搜索找到)時。就好像Stackoverflow的mod正試圖故意重新創建[xkcd 979](https://xkcd.com/979/)。 – Ville
- 1. 類庫項目VS App_Code - 優點/缺點?
- 2. 在Scala項目中使用JAR和SBT
- 3. 針對新的Scala/Spark項目的SBT vs Maven?
- 4. 使用Maven有什麼優點/缺點?
- 5. Scala,Maven,Sbt和Eclipse
- 6. Ruby vs Scala - 每個人的優點和缺點
- 7. 在sbt項目中運行Scala腳本
- 8. 如何在Scala-2.10的Maven項目中使用Scala虛擬化?
- 9. SBT項目轉換器的Maven項目?
- 10. 在不使用Sbt或Maven的情況下從Scala項目創建jar文件
- 11. Sbt打包scala項目
- 12. Scala SWT項目與SBT
- 13. php imagecopyresized vs imagecopyresampled vs imagecopy優點/缺點
- 14. sbt在多項目構建中使用不同的Scala版本
- 15. Casting UserControl ASP.control_name_ascx vs Control_Name - 優點/缺點?
- 16. Scala構建工具SBT vs CBT
- 17. ListView vs嵌套佈局[優點/缺點]
- 18. 什麼項目目錄應該logback.xml在SBT/Scala項目中?
- 19. Scala + IDEA:sbt和fsc的優點和缺點
- 20. Maven的 - 如何獲得在SBT項目
- 21. 如何在SBT Scala項目中使用MySQL JDBC驅動程序?
- 22. Python:_mysql vs MySQLdb的優點和缺點?
- 23. 在Entity Framework中使用EntityDataSource vs ObjectDataSource的優缺點?
- 24. 在Java項目中組織軟件包的優點和缺點
- 25. GWT vs. ScriptSharp優點和缺點
- 26. sbt無法解析Play2-Scala項目中的ensime-sbt-cmd
- 27. 在單個項目中使用SBT和Maven?
- 28. IntelliJ 14 - 創建/導入Scala/SBT項目
- 29. 在Scala中使用this.type的優點?
- 30. 帶IntelliJ的Maven Scala項目
由於其對多模塊構建的卓越支持,我從Maven轉換到了Gradle for Scala項目。使用SBT的Twitter [經驗](http://www.youtube.com/watch?v=6pfdm-gIZus)被他們描述爲「致盲的痛苦」,他們試圖擺脫它(用Maven作爲停止 - 在這個過程中的差距)。 –
另一個很酷的封閉問題... –
我看到的很多很好的問題都只是關閉了;我不知道是誰賦予這些人權力來專斷地決定是否解決問題。我甚至沒有注意他們是否已經接近或不再。 – user1888243