我希望我的自動插件顯示一個設置,如果設置,則會導致≈5個其他設置也被設置爲相應的值。根據另一個設置的值在SBT自動插件中有條件地設置多個設置
具體地,如果下游構建設置一個非空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設置如何工作的心理模型的一些東西顯然是不對的,因爲這看起來應該是微不足道的,但我已經搜索了互聯網並且空洞起來。
你能顯示所有相關的代碼嗎? – nafg