什么“<< =”在sbt设置中做什么?

时间:2015-02-07 08:55:13

标签: scala sbt

我正在学习编写一些更高级的sbt构建文件,我遇到了sbt-proguard的代码:

  binaryDeps <<= compile in Compile map { _.relations.allBinaryDeps.toSeq },
  inputs <<= fullClasspath in Runtime map { _.files },
  libraries <<= (binaryDeps, inputs) map { (deps, in) => deps filterNot in.toSet },
  outputs <<= artifactPath map { Seq(_) },
  • 我想知道&lt;&lt; = 在此背景下的含义是什么?
  • 如何理解第3行的地图功能?

1 个答案:

答案 0 :(得分:1)

<<=DefinableSetting上的方法(由TaskKeyInputKeySettingKey混合而成),它提供了初始化构建设置的方法。它在旧文档here中描述:

:= assigns a value, overwriting any existing value. <<= uses existing values to initialize a setting.

基本上,在0.12(和当前版本,为兼容性)中,它是一种根据其他一些构建设置定义构建设置的方法。

正如@sjrd指出的那样,在0.13中引入了new task setting syntax,允许您使用:=执行此操作。

第三行中的map是通过仅获取binaryDeps中尚未包含inputs的依赖项来创建新设置值,即转换这两个设置成这个新的。