在 sbt 中使用 'extend' 委托自定义配置
Delegation of custom configurations using 'extend' in sbt
我正在为 sbt 编写一个插件,它有两种配置 - base
和 ext
。
我想让 ext
扩展 base
,所以我声明如下:
name := "blah"
lazy val base = config("base")
lazy val ext = config("ext") extend base
name in base := "something"
当检查 ext:name
时,它等于 "blah" 而不是像我预期的那样委托给 base:name
。
在 SBT Config extend vs DefaultSettings 中,我看到需要在项目中声明扩展配置(我假设委托不是配置的 属性,而是配置在项目内部的关系? ).
我的问题是,因为我正在编写一个插件,所以我不能对用户的项目是如何定义的做出任何假设。我怎样才能在我的配置之间声明授权?
好的,我自己才发现:插件加载时需要自动将配置添加到项目中。
就像可以覆盖 projectSettings
以使用自动插件添加设置一样,projectConfigurations
可以自动添加配置!
override val projectConfigurations = Seq(base, ext)
我正在为 sbt 编写一个插件,它有两种配置 - base
和 ext
。
我想让 ext
扩展 base
,所以我声明如下:
name := "blah"
lazy val base = config("base")
lazy val ext = config("ext") extend base
name in base := "something"
当检查 ext:name
时,它等于 "blah" 而不是像我预期的那样委托给 base:name
。
在 SBT Config extend vs DefaultSettings 中,我看到需要在项目中声明扩展配置(我假设委托不是配置的 属性,而是配置在项目内部的关系? ).
我的问题是,因为我正在编写一个插件,所以我不能对用户的项目是如何定义的做出任何假设。我怎样才能在我的配置之间声明授权?
好的,我自己才发现:插件加载时需要自动将配置添加到项目中。
就像可以覆盖 projectSettings
以使用自动插件添加设置一样,projectConfigurations
可以自动添加配置!
override val projectConfigurations = Seq(base, ext)