我正在学习编写一些更高级的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(_) },
答案 0 :(得分:1)
<<=
是DefinableSetting上的方法(由TaskKey,InputKey和SettingKey混合而成),它提供了初始化构建设置的方法。它在旧文档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
的依赖项来创建新设置值,即转换这两个设置成这个新的。