Может кто-нибудь объяснить мне разницу между написанием этих двух строк:
resolvers in ThisBuild ++= appResolvers
resolvers in Global ++= appResolvers
Может кто-нибудь объяснить мне разницу между написанием этих двух строк:
resolvers in ThisBuild ++= appResolvers
resolvers in Global ++= appResolvers
Подробнее читайте Scopes.
Я приведу соответствующие разделы:
Есть три оси осей:
- Проекты
- Конфигурация
- Задачи
Определение масштаба по оси проекта
Если вы ставите несколько проектов в одну сборку, каждый проект нуждается в собственных настройках. То есть, ключи могут быть ограничены в соответствии с проектом.
Глобальная область
Каждая ось области может быть заполнена экземпляром типа оси (например, ось задачи может быть заполнена заданием), или ось может быть заполнена специальным значением Global.
Ссылаясь на скользящие ключи при запуске sbt
*
может отображаться для каждой оси, ссылаясь на областьGlobal
.
{.}/test:full-classpath
устанавливает ось проекта в "целую сборку", где сборка{.}
.{.}
может быть записаноThisBuild
в коде Scala.Обращение к областям в определении сборки
name in Global := "hello"
(
name in Global
неявно преобразует ось области видимостиGlobal
в область со всеми осями, установленными наGlobal
, задача и конфигурация ужеGlobal
по умолчанию, поэтому здесь нужно сделать проектGlobal
, то есть define*/*:name
, а не{file:/home/hp/checkout/hello/}default-aea33a/*:name
)
Итак, как указано выше, Global
устанавливает все три оси в Global
, тогда как ThisBuild
устанавливает только ось проекта в {.}
. Это может иметь смысл, если вы объедините ThisBuild
с другой конфигурацией, подобной оси:
name> set name in Test in ThisBuild := "test-name"
[info] Defining {.}/test:name
Это, вероятно, будет использоваться в плагине:
resolvers in Global ++= appResolvers
В то время как это может появиться в вашем определении сборки:
resolvers in ThisBuild ++= appResolvers
что позволяет вам переопределить глобальное значение по умолчанию, предлагаемое плагином.
В рамках одного и того же определения сборки использование одного из них, скорее всего, будет иметь эквивалентный эффект, поскольку они являются нижними двумя в списке делегатов.