ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ У меня есть довольно базовое понимание концепции sbt config
.
tl; dr Расширение конфигурации предназначено исключительно для наследования групп зависимостей, а не настроек.
Из источников final case class Configuration:
def extend(configs: Configuration*) = Configuration(name, description, isPublic, configs.toList ::: extendsConfigs, transitive)
По умолчанию extendsConfigs
является Nil
как можно видеть в sbt.Configurations объекта:
def config(name: String) = new Configuration(name)
that resolves to (заметим Nil
)
def this(name: String) = this(name, "", true, Nil, true)
В sbt.IvySbt.toIvyConfiguration:
import org.apache.ivy.core.module.descriptor.{ Configuration => IvyConfig }
и там поддержка config
концепции заканчивается SBT и шагов Плющ в Вот где вы должны смотреть на документацию Айви..
Но перед этим прочитать Advanced configurations example, где он говорит:
Это пример .scala построить определение, которое демонстрирует использование Ivy конфигурации для группы зависимостей.
Это начало объяснения. Конфигурации Ivy предназначены для группировки зависимостей и extend
. Конфигурация заключается в расширении группировки.
От the official documentation of Ivy about the conf element:
конфигурация представляет собой способ использования или построить модуль (...) модуль может понадобиться некоторые другие модули и артефакты только во время сборки, и некоторые другие в процессе выполнения. , Все эти разные способы использования или сборки модуля вызываются в конфигурациях модулей Ivy.
Чтение вдоль вы можете найти ответ на свой вопрос (что я сам еще переварить, тоже):
Конфигурация может также распространяться один или несколько других из них одного и того же модуля , Когда конфигурация расширяет другую, все артефакты , необходимые в расширенной конфигурации, также потребуются в конфигурации , которая расширяет другую. Например, если конфигурация B расширяет конфигурацию A, и если в конфигурации A требуются артефакты art1 и art2, то они будут автоматически , требуемые в конфигурации B. С другой стороны, артефакты, требуемые в конфигурации , не обязательно необходимы в конфигурации A.
Это понятие очень полезно для определения конфигураций, которые аналогичны с некоторыми отличиями.
В нижней части страницы, есть Примеров секции с примером с runtime
конфигурации, которая «во время выполнения будет состоять из всех зависимостей, все транзитивно, в том числе зависимостей, объявленных только в компиляции.»
С этим, теперь вы можете понять config
концепцию SBT как зависимостей групп и что сгруппированы в Compile
доступен в Runtime
в its definition looks as follows:
lazy val Runtime = config("runtime") extend (Compile)
Фантастическая ответ спасибо. Скорее разочарован, это все простирается. – monkjack
Что еще вы ожидаете? Настройки - это sbt, а конфигурации - от Айви. Возможно, sbt сделал бы больше, но это разные понятия - конфигурации (Ivy/dependencies) и области видимости (sbt/namespaces). –
Я бы ожидал, что конфигурация наследует задачи/настройки из родительских конфигураций. Это SBT - мне все равно, что делает Айви под капотом, и я не должен. – monkjack