Ответ 1
Начиная с версии 0.13.6 (2014-09-12) это уже не ограничение (# 1059/# 1456)
Оригинальный ответ - для любых проектов, использующих sbt 0.13.0 - 0.13.5
Как оказалось 0.13.0 изменения четко указывают, что это ожидаемое поведение:
Все определения скомпилированы перед настройками, но, вероятно, лучше всего будет устанавливать определения вместе. В настоящее время видимость определений ограничена .sbt файлом, в котором он определен. Они не отображаются в команде
consoleProject
илиset
в это время. Используйте Scala файлы в проекте/для видимости во всех файлах .sbt.
При этом вы сможете поделиться настройкой после определения в project/Build.scala
следующим образом:
import sbt._
import Keys._
object HelloBuild extends Build {
lazy val foo = settingKey[String]("This is a custom setting")
foo := "Build.scala"
}
build.sbt
scalaVersion := "2.10.4-RC1"
foo := "build.sbt"
Затем в sbt shell:
[sbt-0-13-1]> foo
[info] build.sbt
[sbt-0-13-1]> set foo := "shell"
[info] Defining *:foo
[info] The new value will be used by no settings or tasks.
[info] Reapplying settings...
[info] Set current project to sbt-0-13-1 (in build file:/Users/jacek/sandbox/so/sbt-0.13.1/)
[sbt-0-13-1]> foo
[info] shell