Comment puis-je configurer une propriété système pour mon projet SBT?
-
30-09-2019 - |
Question
Je suis sûr que je manque quelque chose très simple ... Je veux définir la propriété système java.awt.headless
à true
pour mon projet SBT. La lecture de la page sur les propriétés Je pense que je dois utiliser system
ou systemOptional
. Dans mon dossier de projet, je l'ai essayé des choses comme:
lazy val javaAwtHeadless = system[Boolean]("java.awt.headless")
Définition comme propriété de l'utilisateur (par exemple lazy val javaAwtHeadless = property[Boolean]
) et le réglage de la valeur d'accompagnement dans build.properties
fait la propriété visible dans la console SBT, mais pas dans la console Scala de SBT (via System.getProperty("java.awt.headless")
).
set java.awt.headless true
des travaux de la console SBT, y compris être définis dans la Console Scala, mais il ne persiste pas à la prochaine fois que je lance SBT.
La solution
Une méthode simple serait de modifier le fichier batch ou d'un script shell que vous utilisez pour exécuter sbt
et ajouter -Dprop=val
Autres conseils
Si je avais besoin de cette option pour toutes les tâches SBT, je le place suit comme dans build.sbt
javaOptions += "-Djava.awt.headless=true"
Si c'était juste pour une tâche, par exemple: l'exécution, vous pouvez limiter la portée que:
javaOptions in Runtime += "-Djava.awt.headless=true"
Si vous essayez de définir les propriétés de SBT, comme les paramètres du plugin, puis ce qui suit travaillé pour moi avec 0.13+
. Ce qui suit cependant fait le travail, en essayant de passer des paramètres Liquibase, comme mot de passe, de nos cadres de CI.
Dans votre build.sbt
laid, mais par défaut de fournitures, et saisit éventuellement de System.properties . De cette façon, vous avez votre cas par défaut et override couverts.
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")
De la ligne de commande
Maintenant, juste passer outre via -Dprop=value
comme vous le feriez avec Maven ou d'autres programmes de JVM. accessoires Note apparaissent avant tâche SBT.
sbt -Dliquibase.password="shh" -Dliquibase.username="bob" liquibase:liquibase-update