Почему sbt не получает здесь значение объема? - PullRequest
2 голосов
/ 21 декабря 2011

Просматривая руководство по началу работы с областями, кажется, что я должен быть в состоянии сделать что-то подобное:

(где Build.scala имеет sampleKeyA / B / C / D из руководство по началу работы )

sampleKeyA := "value 1"

sampleKeyA in compile := "value 2"

compile <<= (compile in Compile, sampleKeyA) map { (result, s) =>
  println("sample key: " + s)
  result
}

Но когда я запускаю sbt compile, значение, напечатанное для sampleKeyA, - это "значение 1", а не "значение 2", как я ожидаю.Чего мне не хватает?

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Во-первых, определение sampleKeyA в компиляции , конечно, допустимо, поскольку оно охватывает настройку для задачи compile .

Во-вторых, вы получаете значение 1 , потому что вы используете sampleKeyA без вышеуказанной области действия. Измените его на sampleKeyA в компиляции , и вы получите значение 2 .

Чтобы увидеть это, просто запустите "пустой" сеанс sbt и выполните следующее:

> set SettingKey[String]("sampleKeyA") := "value 1"           
[info] Reapplying settings...
[info] Set current project to default-a57b70 (in build file:/Users/heiko/tmp/sbt/)
> set SettingKey[String]("sampleKeyA") in compile := "value 2"
[info] Reapplying settings...
[info] Set current project to default-a57b70 (in build file:/Users/heiko/tmp/sbt/)
> sampleKeyA                                                  
[info] value 1
> sampleKeyA(for compile)                                     
[info] value 2
2 голосов
/ 22 декабря 2011

Он выбрал value 1, потому что value 2 находится в области компиляции, но вы получили общую версию.Если бы вы написали sampleKeyA in Compile, это бы сработало.Или, возможно, in compile - я думаю, что объявление неверно, поскольку область действия compile на самом деле не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...