Как установить системное свойство для моего проекта в sbt?

Я уверен, что мне не хватает чего-то очень простого... Я хочу установить системное свойство java.awt.headless на true для моего проекта sbt. Чтение страницы по свойствам Я думаю, что мне нужно использовать system или systemOptional. В моем файле проекта я пробовал такие вещи, как:

lazy val javaAwtHeadless = system[Boolean]("java.awt.headless")

Установив его как пользовательское свойство (например, lazy val javaAwtHeadless = property[Boolean]) и установив сопутствующее значение в build.properties, свойство было видимым в консоли sbt, но не в консоли sbt Scala (через System.getProperty("java.awt.headless")).

set java.awt.headless true из работы консоли sbt, включая установку в консоли Scala, но она не сохраняется в следующий раз, когда я запускаю sbt.

Ответ 1

Простым способом было бы отредактировать командный файл или оболочку script, которые вы используете для запуска sbt и добавить -Dprop=val

Ответ 2

Если мне нужна эта опция для всех задач sbt, я бы установил ее следующим образом в build.sbt

javaOptions += "-Djava.awt.headless=true" 

Если это было просто для одной задачи, например: run, вы можете обладать тем, что:

javaOptions in Runtime += "-Djava.awt.headless=true" 

Ответ 3

Если вы пытаетесь установить свойства SBT, такие как настройки плагина, тогда для меня работала с 0.13+. Следующее, однако, работало при попытке передать настройки Liquibase, такие как пароль, из наших инфраструктур CI.

В вашем файле build.sbt

Ужасно, но поставляет значения по умолчанию и, возможно, захватывает System.properties. Таким образом, у вас есть дела по умолчанию и переопределенные случаи.

def sysPropOrDefault(propName:String,default:String):String = Option(System.getProperty(propName)).getOrElse(default)

liquibaseUsername := sysPropOrDefault("liquibase.username","change_me")
liquibasePassword := sysPropOrDefault("liquibase.password","chuck(\)orris")

Из командной строки

Теперь просто переопределяйте через -Dprop=value, как и с Maven или другими программами JVM. Перед выполнением задачи SBT появляются реквизиты примечаний.

sbt -Dliquibase.password="shh" -Dliquibase.username="bob" liquibase:liquibase-update