Как мне установить системное свойство для моего проекта в sbt? - PullRequest
11 голосов
/ 27 июня 2010

Я уверен, что упускаю что-то действительно простое ... Я хочу установить системное свойство 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.

Ответы [ 3 ]

10 голосов
/ 27 июня 2010

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

6 голосов
/ 24 апреля 2014

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

следующим образом
javaOptions += "-Djava.awt.headless=true" 

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

javaOptions in Runtime += "-Djava.awt.headless=true" 
1 голос
/ 02 июня 2016

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

В вашем билде.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

...