2013-10-31 59 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

相关问题