2012-07-10 56 views
97

我要走出這個壁櫥!我不明白SBT。在那裏,我說,現在請幫助我。有人可以解釋使用SBT的正確方法嗎?

條條大路通羅馬,那是SBT一樣的:要開始使用SBTSBTSBT LauncherSBT-extras等,然後有不同的方式,包括和決定庫。 有沒有'最好'的方法?

我在問,因爲有時我會有點迷路。 SBT文件非常全面和完整,但我發現自己不知道何時使用build.sbtproject/build.propertiesproject/Build.scalaproject/plugins.sbt

然後它變成樂趣,還有就是Scala-IDESBT - 什麼是使用它們在一起的正確方法?首先,雞還是雞蛋?

最重要的是,您如何找到正確的存儲庫和版本以包含在您的項目中?我只是拔出一把馬刀,開始黑客前進?我經常發現包括所有東西和廚房水槽的項目,然後我意識到 - 我不是唯一一個迷失的人。

作爲一個簡單的例子,現在我開始一個全新的項目。我想使用SLICKScala的最新功能,這可能需要最新版本的SBT。 開始的理由是什麼?爲什麼?我應該在什麼文件中定義它,它應該如何顯示?我知道我可以得到這個工作,但我真的很想要一個專家的意見,應該去哪裏(爲什麼它應該去那裏會有獎金)。

我一直在使用SBT進行一年多的小項目。我用SBT,然後SBT Extras(因爲它使一些頭痛神奇消失),但我不知道爲什麼我應該使用這一個或另一個。我只是有點沮喪,因爲不理解這些東西如何組合在一起(SBT和存儲庫),並認爲如果這可以用人的方式來解釋,那麼下一個這樣做的人會很困難。

+2

究竟你是什麼意思與「有斯卡拉-IDE和SBT」?你用sbt定義你的項目並且sbt可以生成一個ide(eclipse或者intellij)項目。所以SBT第一... – Jan 2012-07-10 10:57:09

+2

@Jan我提到,因爲Scala-IDE使用SBT作爲構建管理器。請參閱http://www.assembla.com/spaces/scala-ide/wiki/SBT-based_build_manager,並在其中提及「無需定義您的SBT項目文件」。我感到困惑。 – Jack 2012-07-10 11:04:55

+0

好的。正如我通常使用intellij(或崇高)編輯scala我不知道。我猜這個構建器會生成自己的sbt配置? – Jan 2012-07-10 12:14:58

回答

28

最重要的是,您如何找到合適的存儲庫和版本以包含在您的項目中?我只是拔出一把砍刀,並開始黑客前進?我經常發現項目,其中包括家居和廚房的水槽

對於基於Scala的依存關係,我會去什麼作者建議。例如:http://code.google.com/p/scalaz/#SBT指示要使用:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4" 

或者https://github.com/typesafehub/sbteclipse/對在哪裏添加說明:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1") 

對於基於Java的依賴,我用http://mvnrepository.com/看到外面的東西,然後點擊SBT選項卡。例如http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3指示要使用:

libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3" 

然後拉出machette和黑客開始用自己的方式前進。如果你幸運的話,最終不會使用依賴於一些相同罐子但是不兼容版本的罐子。鑑於Java生態系統,通常最終會包含所有內容和廚房接收器,並且需要一些努力來消除依賴關係或確保不會錯過所需的依賴關係。

作爲一個簡單的例子,我現在開始一個全新的項目。我想使用SLICK和Scala的最新功能,這可能需要最新版本的SBT。開始的理由是什麼?爲什麼?

我認爲理智的觀點是build immunity to sbt gradually

確保你明白:

  1. 作用域格式{<build-uri>}<project-id>/config:key(for task-key)
  2. 設置的3個香精(SettingKeyTaskKeyInputKey) - 在http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def

閱讀 「任務鍵」 一節請始終打開這4頁,以便您可以跳轉並查找各種定義和示例:

  1. http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
  2. http://www.scala-sbt.org/release/docs/Detailed-Topics/index
  3. http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
  4. http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html

最大限度地利用的showinspect和標籤完成來熟悉的設置,他們的依賴,定義實際值和相關設置。我不相信你會發現使用inspect的關係被記錄在任何地方。如果有更好的方法我想知道它。

24

我用SBT的方式是:

  1. 使用sbt-extras - 剛剛拿到shell腳本,並把它添加到你項目
  2. 與建立MyProject.scala文件創建一個項目文件夾的根目錄SBT。我比起build.sbt方法更喜歡這種方式 - 它的Scala並且更加靈活
  3. 創建一個project/plugins.sbt文件併爲您的IDE添加合適的插件。無論是sbt-eclipse,sbt-idea還是ensime-sbt-cmd,您都可以爲eclipse,intellij或ensime生成項目文件。
  4. 啓動你的項目的根SBT並生成項目文件的IDE
  5. 利潤

我也懶得在IDE的項目文件檢查,因爲它們是由SBT產生的,但也有可能是你想要這樣做的原因。

您可以看到像這樣設置的示例​​。

+0

謝謝你的回答。我接受了另一個答案,因爲它涵蓋了更多的內容,並且推薦了你的原因,這也是非常好的。如果可以的話,我會接受。 – Jack 2012-07-11 11:58:57

1

使用類型安全的激活,稱SBT的一個奇特的方式,來與項目模板和種子:https://typesafe.com/activator

Activator new 

Fetching the latest list of templates... 

Browse the list of templates: http://typesafe.com/activator/templates 
Choose from these featured templates or enter a template name: 
1) minimal-java 
2) minimal-scala 
3) play-java 
4) play-scala 
(hit tab to see a list of all templates) 
+4

我偏愛這樣的想法,即如果有疑問,爲混音添加更多​​魔力不可能解決您的問題。 – Cubic 2014-11-06 15:20:17