Ответ 1
Подробнее читайте 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