我有几个SBT 0.13 / Play 2.2项目(网站)。它们都是多模块的,因为它们共享一些共同的功能。这使得它们的项目配置文件既复杂又几乎相同,但不完全相同。
我希望能够在项目中尽可能多地共享这些配置文件(频繁的播放更新使5个以上的网站保持最新状态是一种痛苦,更不用说所有几乎相同但不断发展的依赖项列表了项目)。
build.properties和plugins.sbt在项目之间是相同的,并且可以用简单的脚本覆盖。大。
Build.scala比较棘手-我想介绍一个共享基类,如下所示:
abstract class MyBuildBase extends Build { ... }
在Build.scala中执行以下操作:
object ApplicationBuild extends MyBuildBuild { ... }
为了使这一切有意义,需要在项目之间共享MyBuildBase.scala。可以使用svn:external来完成,该命令在目录上运行。这意味着在编译Build.scala时,我需要以某种方式使此共享目录可访问(否则sbt会大声抱怨)。
阅读http://www.scala-sbt.org/0.13.0/docs/Detailed-Topics/Classpaths.html和http://www.scala-sbt.org/0.13.0/docs/Getting-Started/Full -Def.html似乎应该可行。
但是,对于我来说,目前还不清楚我到底要在project / project / Build.scala文件中实际放置什么才能真正实现这一目标-我找不到“旨在构建sbt构建文件并包括在内的sbt构建文件的示例一些额外的源文件”。
有什么建议么?
您可能想要做的是创建一个插件或共享库。
您可以使用以下构建方式创建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版本号和您自己的版本进行版本控制的库。您应该能够将想要的任何代码放入其中,以在两次构建之间共享。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句