我正在编写一个需要特定设置的插件:configUrl
如果我在build.conf
中指定该设置,它将如下所示:
MyPlugin.configUrl := "http://..../..."
然后我可以使用命令行执行此操作:
sbt 'set MyPlugin.configUrl := "http://..../..."' performAction
是否有更好的方法可以让我在构建中没有这个设置?
如果我在没有该设置的情况下启动sbt
,则会收到以下错误:
[error] Reference to undefined setting:
[error]
[error] *:config-url from *:application-configuration
我搜索了谷歌但无法找到在命令行上提供设置的方法,如下所示:
sbt config-url="http://..../..."
答案 0 :(得分:9)
如果设置具有默认值,则应在插件中设置该默认值。如果没有,则类型应为Option[...]
,默认值为None
。通常,构建不应该要求从命令行传递参数以便加载。
最后,如果它主要是您不喜欢的set
语法,则可以使用系统属性并从您的设置中读取系统属性。但是,这仅限于字符串,因此您将失去类型安全性。
系统属性可以在命令行上由-Dkey=value
设置(直接或在启动脚本中):
sbt -Dconfig.url=http://...
(根据你的shell引用)。要将此值拉入设置:
MyPlugin.configUrl :=
url(System.getProperty("config.url", "<default>"))
其中"<default>"
是未设置系统属性时要使用的值。如果采用Option
方法,
MyPlugin.configUrl :=
for(u <- Option(System.getProperty("config.url"))) yield
url(u)