gpt4 book ai didi

scala - SBT 通用build设置

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

我有多个 SBT 项目,它们都有一个共同的设置 - 例如多模块,publishTo 设置等。

我如何提供一个常见的例如每个项目都可以从它扩展的 CommonBuild 类?例如:

trait CommonBuild {
val publishSettings = Seq(
publishTo := Some("", ""),
credentials += ...
)

def module(name: String) (
settings: Seq[Setting[_]],
projectId: String = PROJECT + "-" + name,
dirName: String = name,
srcPath: String = PROJECT + name
) = Project(projectId, file(dirName), settings = (buildSettings ++ srcPathSetting(projectId, srcPath)) ++ publishSettings ++ settings)

}

现在它可以被项目构建使用:
object ProjABuild extends CommonBuild {
// use CommonBuild methods / vals
}

object ProjBBuild extends CommonBuild {
// use CommonBuild methods / vals
}

最佳答案

我也想这样做。重要的是,公共(public)设置需要存在于子项目所依赖的自己的项目中,以便对公共(public)设置所做的更改会自动在所有子项目中生效。实现这一点的唯一方法是将常用的东西放在 SBT 插件中。

我写了这样一个插件,叫 iesl-sbt-base .它提供了一堆样板文件,因此您项目的 Build.scala 文件可以非常简短。它提供:

  • 解析器配置
  • 通过自动更新简化依赖关系解析
  • 明确使用了哪些传递依赖项
  • 快照版本的可选保护
  • 清理日志配置

  • 请看 https://github.com/iesl/iesl-sbt-base详情。您可能想要 fork 以更改特定于我的设置的内容(例如,尤其是解析器 URL)。如果有需求,我可以考虑如何使其更具可配置性。

    关于scala - SBT 通用build设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12686381/

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