gpt4 book ai didi

scala - 如何在 SBT (Play) 多项目中使用共享配置?

转载 作者:行者123 更新时间:2023-12-04 18:08:50 27 4
gpt4 key购买 nike

我有几个 SBT 0.13/Play 2.2 项目(网站)。它们都是多模块的,因为它们共享一些共同的功能。这使得他们的项目配置文件既复杂又几乎相同,但并不完全相同。

我希望能够在项目中尽可能多地共享这些配置文件(频繁的 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 时以某种方式使这个共享目录可访问(否则 sbt 会大声提示)。

阅读 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看来这应该是可能的。

但是,我非常不清楚在 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 的版本号和您自己的版本号的库。您应该能够将您想要的任何代码放在那里以便在构建之间共享。

关于scala - 如何在 SBT (Play) 多项目中使用共享配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com