Я использую довольно недавнюю версию SBT (кажется, трудно понять, что такое версия). Я хочу передать свойства системы моему приложению с помощью sbt run
следующим образом:
sbt -Dmyprop=x run
Как я могу это сделать?
Я использую довольно недавнюю версию SBT (кажется, трудно понять, что такое версия). Я хочу передать свойства системы моему приложению с помощью sbt run
следующим образом:
sbt -Dmyprop=x run
Как я могу это сделать?
Сценарий SBT обычно не создает новые процессы, поэтому вам также нужно сказать, чтобы это делалось, если вы хотите установить переданные аргументы. Вы можете добавить что-то подобное к настройкам сборки:
fork := true
javaOptions := Seq("-Dmx=1024M")
Более подробная информация о процессах forking в документации SBT.
Я нашел лучший способ добавить это к build.sbt
:
// important to use ~= so that any other initializations aren't dropped
// the _ discards the meaningless () value previously assigned to 'initialize'
initialize ~= { _ =>
System.setProperty( "config.file", "debug.conf" )
}
Связано: При выполнении этой настройки для конфигурации загружаемой конфигурации (в моем случае использования) необходимо также вручную включить конфигурацию по умолчанию. Для этого Конфигурация типов, предложенная include "application"
, была недостаточной, но include classpath("application.conf")
работал. Мысль упоминать, так как некоторые другие, возможно, захотят переопределить свойства системы по той же причине.
Источник: обсуждение в списке рассылки sbt
Спасибо за указатель, это действительно помогло мне решить несколько связанную проблему с Scala Tests.
Оказалось, что sbt
выполняет fork тесты, когда есть подпроекты (см. мой код), и некоторые из тестов не работают для получения системного свойства.
Итак, в sbt -Dsomething="some value" test
некоторые из тестов завершились неудачно, когда не удалось найти something
в свойствах системы (это был мой URI базы данных, поэтому это было важно!)
Это сводило меня с ума, поэтому я подумал, что буду публиковать его здесь для будущих ссылок для других (как правильно заметил @akauppi, шансы высоки, что "другие" могут быть мне в течение нескольких недель!).
Исправить было добавление следующего к build.st
:
fork in Test := false