Я хочу, чтобы мой 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, явно не так, поскольку это кажется тривиальным, и все же я прошерстил Интернет и ничего не нашел.