11
votes

Comment définir une propriété système pour mon projet dans SBT?

Je suis sûr que je manque quelque chose de vraiment simple ... je veux définir la propriété système java.awt.adless à vrai pour mon projet SBT. Lire le page sur les propriétés Je pense que je dois utiliser < Code> Système ou SystemOptional . Dans mon fichier de projet, j'ai essayé des choses comme: xxx

le réglage comme une propriété utilisateur (par exemple, Lazy Val Javaawtheadless = Propriété [Boolean] ) et réglage de l'accompagnateur Valeur dans build.properties a rendu la propriété visible dans la console SBT mais pas dans la console Scala de SBT (via System.geProperty ("Java.Awt.Headless") ). < / p>

Set Java.awt.adless true de la console SBT fonctionne, y compris étant défini dans la console Scala, mais cela ne persiste pas à la prochaine fois que je lance SBT.


0 commentaires

3 Réponses :


11
votes

Une méthode simple serait de modifier le fichier de lots ou le script shell que vous utilisez pour exécuter sbt et ajouter -dprop = val


5 commentaires

Oui, mais cela nécessiterait que je modifie mes commandes de lancement SBT sur toutes les machines que je développe sur, plus une impact sur les autres projets que je développe à l'aide de SBT.


Personnellement, je vérifie personnellement le lanceur SBT et le script SBT Shell dans chaque projet, par exemple: Github.com/scalaz/scalaz. Vous venez d'essayer system.setproperty ("prop", "val") quelque part dans la définition de votre projet? N'oubliez pas que SBT par défaut fonctionne tout dans le même processus, à moins que vous ne demandiez expressément à une fourchette: code.google.com/p/Simple-build-tool/wiki/forking


Ou dans le coffre, System.Props ("PROP") = "VAL". Aaaahh, c'est mieux.


Vous pouvez le faire à travers un plugin dans la coquille. J'ai écrit github.com/mustaghattack/jvm-command qui le fait.


Ou, sans plugin, juste sbt> eval system.setproperty ("foo", "bar")



8
votes

Si j'avais besoin de cette option pour toutes les tâches SBT, je l'ai défini comme suit dans Build.sbt

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


0 commentaires

3
votes

Si vous essayez de définir des propriétés SBT, comme les paramètres de plug-in, les suivants ont fonctionné pour moi avec 0,13 + code>. Ce qui suit a toutefois fonctionné, lorsque vous essayez de transmettre des paramètres Liquibase, comme le mot de passe, de nos cadres CI.

dans votre build.sbt h3>

moche, mais fournit des validations par défaut et s'empare éventuellement de System.properties em>. De cette façon, vous avez vos cas de valeur par défaut et remplacez les cas couverts. P>

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")


1 commentaires

"Les accessoires de note apparaissent avant la tâche SBT." bon crier, c'était mon problème