在构建中没有定义默认值时,在命令行上设置设置值?

EEC*_*LOR 3 sbt

我正在编写一个需要特定设置的插件: configUrl

如果我指定我的设置build.conf将如下所示:

MyPlugin.configUrl := "http://..../..."
Run Code Online (Sandbox Code Playgroud)

然后我可以使用命令行来执行此操作:

sbt 'set MyPlugin.configUrl := "http://..../..."' performAction
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法可以让我在构建中没有这个设置?

如果我sbt没有设置启动,我会收到以下错误:

[error] Reference to undefined setting: 
[error] 
[error]   *:config-url from *:application-configuration
Run Code Online (Sandbox Code Playgroud)

我搜索谷歌但无法找到在命令行上提供设置的方法,如下所示:

sbt config-url="http://..../..."
Run Code Online (Sandbox Code Playgroud)

Mar*_*rah 9

如果设置具有默认值,则应在插件中设置该默认值.如果没有,则类型应该是Option[...]默认值None.通常,构建不应该要求从命令行传递要加载的参数.

最后,如果它主要是set您不喜欢的语法,您可以使用系统属性并从您的设置中读取系统属性.但是,这仅限于字符串,因此您失去了类型安全性.

可以通过-Dkey=value命令行(直接或在启动脚本中)设置系统属性:

sbt -Dconfig.url=http://...
Run Code Online (Sandbox Code Playgroud)

(根据你的shell引用).要将此值拉入设置:

MyPlugin.configUrl := 
  url(System.getProperty("config.url", "<default>"))
Run Code Online (Sandbox Code Playgroud)

"<default>"如果未设置系统属性,则使用的值在哪里.如果采取这种Option方法,

MyPlugin.configUrl := 
  for(u <- Option(System.getProperty("config.url"))) yield
    url(u)
Run Code Online (Sandbox Code Playgroud)