我希望我的AutoPlugin公开一个设置,如果设置,会导致≈5个其他设置也被设置为相应的值。
具体来说,如果下游构建设置非空shadedDeps
:
val shadedDeps = settingKey[Seq[ModuleID]]("When set, the main JAR produced will include these libraries shaded")
然后我想自动设置多个与assembly
相关的设置(例如assemblyExcludedJars
,assemblyJarName
,artifactClassifier
)。
我找不到办法执行此操作,因为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设置如何工作的心理模型的东西显然是不对的,因为这看起来应该是微不足道的,但我已经在互联网上搜索并且空洞。
答案 0 :(得分:0)
稍后我想出了这个;我的kitchen-sink项目 - 样板插件中的this addSparkDeps
block是一个咒语的示例,可以放置在下游build.sbt
并展开多个设置。 Here's an example usage