2013-10-31 70 views
5

我有幾個SBT 0.13/Play 2.2項目(網站)。它們都是多模塊的,因爲它們共享一些共同的功能。這使得他們的項目配置文件既複雜又幾乎相同,但不完全相同。如何在SBT(Play)多項目中使用共享配置?

我希望能夠在項目中儘可能多地分享這些配置文件(頻繁的播放更新可以讓5個以上的網站保持最新的皇家痛苦,更不用說所有幾乎完全相同但卻完全相同的內容)不斷髮展的項目依賴列表)。

build.properties和plugins.sbt在各個項目中是相同的,並且可以被簡單的腳本覆蓋。大。

Build.scala是麻煩 - 我想向大家介紹一個共享的基類,像這樣:

abstract class MyBuildBase extends Build { ... } 

,在Build.scala做:

object ApplicationBuild extends MyBuildBuild { ... } 

爲了這個作任何完全可以理解,MyBuildBase.scala需要跨項目共享。這可以通過svn:external來完成,它在目錄上運行。這意味着我需要以某種方式在編譯Build.scala時訪問此共享目錄(否則大聲抱怨)。

閱讀http://www.scala-sbt.org/0.13.0/docs/Detailed-Topics/Classpaths.htmlhttp://www.scala-sbt.org/0.13.0/docs/Getting-Started/Full-Def.html這似乎應該是可能的。

但是,我真的不知道要在項目/項目/ Build.scala文件中真正實現這個目標 - 我無法找到一個的示例「sbt構建文件,旨在構建sbt構建文件並在構建中包含一些額外的源文件「

有什麼建議嗎?

回答

6

你可能想要做的是創建一個插件或共享庫。

,您可根據SBT項目,構建如下所示:

build.sbt

sbtPlugin := true 

organization := "you" 

name := "common-build" 

version := "1.0" 

然後在src/main/scala創建抽象類 「MyBuildBase」。作爲sbt插件發佈此項目。

然後在您的其他項目中,您可以將其用作庫/插件。在project/plugins.sbt補充:

addSbtPlugin("you" % "common-build" % "1.0") 

和構建構建時,這將解決您共同構建庫

如果您需要更多信息,請查看有關sbt插件的更多信息,並忽略有關製作擴展插件的部分。插件只是使用sbt的版本號和您自己的版本進行版本化。你應該能夠把你想要的任何代碼放在那裏來在構建之間共享。

+0

優秀的建議。結果SVN可以處理外部文件,而不僅僅是自v1.6以來的目錄,所以我用這種方式解決了它,因爲它在我的特殊情況下更容易。但是,您的回答涵蓋了我實際詢問的問題,因此將其標記爲如此。 – Jxtps

相關問題