sbt.TaskKey和sbt.SettingKey的SBT文档在哪里?

时间:2013-12-12 19:57:56

标签: sbt

我有兴趣了解sbt.TaskKeysbt.SettingKey的某些操作

<<=
<+=
<++=

我知道主网站的文档部分有很多示例和文档,但我没有找到任何帮助。这是我看的地方:

http://www.scala-sbt.org/release/docs/Getting-Started/More-About-Settings.html

http://www.scala-sbt.org/release/api/index.html#sbt.TaskKey

http://www.scala-sbt.org/release/api/index.html#sbt.SettingKey

1 个答案:

答案 0 :(得分:4)

sbt 0.12语法

如果您想了解<<= - 运营商的家庭,最好去的地方是入门指南的sbt 0.12.1版本,特别是您链接的页面更多种类的设置有一个部分叫做Computing a value based on other keys' values: <<=

  

~=根据密钥的先前关联值定义新值。但是如果你想根据其他键的值来定义一个值呢?

     
      
  • <<=允许您使用任意其他键的值计算新值。
  •   
     

<<=有一个Initialize[T]类型的参数。 Initialize[T]实例是一种计算,它将与一组键关联的值作为输入,并根据这些其他值返回类型T的值。它初始化了T类型的值。

     

给定Initialize[T]<<=当然会返回Setting[T](就像:=+=~=等。)

如文档中所述,<<=会让您根据Initialize[T]进行思考,因此如果您想从多个键中提取值并以某种方式构建它,则需要执行此操作类似的东西:

jarName in assembly <<= (name, version) map { (n, v) =>
  n + "-assembly-" + v + ".jar" }

此时您必须知道jarNameTaskKey而不是SettingKey

sbt 0.13语法

您在最新的“入门指南”中未找到<<=的原因是sbt 0.13语法使<<=过时了。您所需要的只是:=。 sbt使用宏来扩展:=的rhs以生成以上内容:

jarName in assembly := {
  name.value + "-assembly-" + version.value + ".jar"
} 

:=可让您在T中思考,因此处理起来更容易。