使用settingKey 宏定义myConfigUrl 键。
build.sbt 示例如下:
lazy val myConfigUrl = settingKey[String]("URL for fetching a remote configuration file")
myConfigUrl := "http://mycoolwebsite.com/config.xml"
一个示例会话:
➜ my-cool-plugin xsbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to my-cool-plugin (in build file:/Users/jacek/sandbox/my-cool-plugin/)
> show myConfigUrl
[info] http://mycoolwebsite.com/config.xml
鉴于the comment OP 询问的位置:
我现在如何在我的项目代码中引用它?我希望能够
在我的 .scala 文件之一中访问我分配给 myConfigUrl 的值,
与构建过程无关。
该键应在build.scala 构建对象中定义,因为*.sbt 文件中的键在project/*.scala 文件中不可见。
这是一个示例 project/build.scala 构建定义,其中包含密钥:
import sbt._
import Keys._
object build extends Build {
lazy val myConfigUrl = settingKey[String]("URL for fetching a remote configuration file")
lazy val mySettings = inConfig(Compile) { Seq(
myConfigUrl := "http://mycoolwebsite.com/config.xml"
)}
}
使用 Scala 构建,将 build.sbt 更改为如下:
mySettings
您可以这样做,因为每个构建文件都会自动导入到 *.sbt 文件中,因此访问 vals 变得像这样简单。要使设置 - 单个 myConfigUrl 键 - 在项目中可用,您需要添加 Seq[Setting] val。
执行reload 并且密钥应该像以前一样可用:
> show myConfigUrl
[info] http://mycoolwebsite.com/config.xml
给定the comment:
我对让最终用户
my-cool-plugin 定义他们自己的 myConfigUrl 来代替
my-cool-plugin 的 build.sbt 中的默认值
钥匙的意图很清楚。这是插件的关键,所以只需将sbtPlugin := true 添加到构建中,publishLocal 项目并使用addSbtPlugin 在另一个构建中声明对插件的plugin 依赖项。
您可能想了解 sbt 0.13.5 的新功能 - auto plugins - 进一步简化您的插件设置:
从 sbt 0.13.5 开始,有一个新的自动插件功能可以启用
插件自动、安全地确保其设置和
依赖项在一个项目上。