根据SBT AutoPlugin中的其他设置值有条件地设置多个设置

时间:2016-11-24 17:46:52

标签: sbt

我希望我的AutoPlugin公开一个设置,如果设置,会导致≈5个其他设置也被设置为相应的值。

具体来说,如果下游构建设置非空shadedDeps

val shadedDeps = settingKey[Seq[ModuleID]]("When set, the main JAR produced will include these libraries shaded")

然后我想自动设置多个与assembly相关的设置(例如assemblyExcludedJarsassemblyJarNameartifactClassifier)。

我找不到办法执行此操作,因为AutoPlugin.projectSettings方法无法访问shadedDeps.value(尝试这样做会出现“value can only be used within a task or setting macro”错误)。

我提出的最好的方法是让我的插件也定义如下设置:

val extraAssemblySettings = settingKey[Seq[Def.Setting[_]]]("…")

然后使用我想要的程序集设置有条件地加载该设置,然后评估

extraAssemblySettings

在下游项目'build.sbt中。理想情况下,我可以跳过最后一步,只需设置shadedDeps即可触发所有内容。

关于我(非常幼稚)关于SBT设置如何工作的心理模型的东西显然是不对的,因为这看起来应该是微不足道的,但我已经在互联网上搜索并且空洞。

1 个答案:

答案 0 :(得分:0)

稍后我想出了这个;我的kitchen-sink项目 - 样板插件中的this addSparkDeps block是一个咒语的示例,可以放置在下游build.sbt并展开多个设置。 Here's an example usage