Я написал простой SBT плагин, который определен в helloMessage
, а значение по умолчанию None
:Почему мое использование `ThisBuild` не работает?
lazy val helloMessage = settingKey[Option[String]]("the message for hello")
override def projectSettings = Seq(
helloMessage in ThisBuild := None,
hello := println("Hello from my plugin: " + helloMessage.value)
)
Затем в проекте тестирования, я добавил этот плагин, и определяется в build.sbt
:
helloMessage in ThisBuild := Some("hello from this build")
lazy val root = project in file(".")
lazy val core = project in file("core")
Вы можете заметить, я использовал ThisBuild
для helloMessage
.
Но проблема в том, что когда я запускаю ./sbt helloMessage
в тестовом проекте, он просто выводит None
! Не сообщение Some("hello from this build")
Я определил!
Но если удалить две строки:
lazy val root = project in file(".")
lazy val core = project in file("core")
или просто core
линии, он будет выводить ожидаемое сообщение Some("hello from this build")
.
Где не так? Если мне нужно сохранить несколько проектов, как их исправить?
Спасибо, я просто определяю 'helloMessage: = None' в' buildSettings', теперь все в порядке. Но вскоре я обнаружил, что он может использовать настройки типа 'name.value' или' target.value' – Freewind