Wie stelle ich eine Systemeigenschaft für mein Projekt in sbt?
-
30-09-2019 - |
Frage
Ich bin sicher, ich bin etwas fehlt wirklich einfach ... ich die Systemeigenschaft java.awt.headless
zu true
für mein sbt Projekt einstellen möchten. Lesen Sie die Seite auf Eigenschaften Ich glaube, ich brauche system
zu verwenden oder systemOptional
. In meiner Projekt-Datei habe ich versucht, Dinge wie:
lazy val javaAwtHeadless = system[Boolean]("java.awt.headless")
es als Benutzer Eigenschaft festlegen (z lazy val javaAwtHeadless = property[Boolean]
) und Einstellen der Begleitwert in build.properties
machte die Eigenschaft sichtbar in der sbt Konsole aber nicht innerhalb sbt Scala Konsole (über System.getProperty("java.awt.headless")
).
set java.awt.headless true
von den sbt Konsole Werke, darunter sein Set in der Scala-Konsole, aber es bleibt nicht auf das nächste Mal, wenn ich Start sbt.
Lösung
Eine einfache Methode wäre, die Batch-Datei oder Shell-Skript zu bearbeiten, dass Sie sbt
ausführen verwenden und fügen Sie -Dprop=val
Andere Tipps
Wenn ich diese Option für alle sbt Aufgaben benötigen, würde ich setze es folgt wie in build.sbt
javaOptions += "-Djava.awt.headless=true"
Wenn es nur für eine Aufgabe war, zum Beispiel: laufen, können Sie Umfang, dass:
javaOptions in Runtime += "-Djava.awt.headless=true"
Wenn Sie auf Set SBT Eigenschaften, wie Plugin-Einstellungen versuchen, dann für mich folgende mit 0.13+
gearbeitet. Die folgende jedoch funktioniert, wenn man versucht, in Einstellungen Liquibase zu übergeben, wie Passwort, aus unserem CI-Frameworks.
In Ihrem build.sbt
Hässlich, aber liefert Standardwerte und greift wahlweise von System.properties . Auf diese Weise Sie haben Ihre Ausfall- und Überschreibung Fälle abgedeckt.
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")
von der Kommandozeile
Jetzt außer Kraft nur über -Dprop=value
, wie Sie es mit Maven oder anderen JVM-Programmen. Hinweis Requisiten erscheinen vor SBT Aufgabe.
sbt -Dliquibase.password="shh" -Dliquibase.username="bob" liquibase:liquibase-update