我看到变量声明
lazy val liquibase = TaskKey[Liquibase]("liquibase", "liquibase object")
然后我在下面看到
liquibase <<= ( liquibaseChangelog, liquibaseDatabase ) map {
( cLog :String, dBase :Database ) =>
new Liquibase( cLog, new FileSystemResourceAccessor, dBase )
}
看起来它正在为TaskKey
添加功能?
答案 0 :(得分:6)
在Scala中它没有任何意义,它是由sbt定义的DSL。
在您的情况下,它所做的是根据分配给liquibase
和liquibaseChangelog
的值来定义liquibaseDatabase
,从而添加对它们的依赖。有关更多详细信息,请参阅"Computing a value based on other keys' values"。
另外,从sbt 0.13开始,你可以用更好,更清晰的方式写出来:
liquibase := {
val fs = new FileSystemResourceAccessor
new Liquibase(liquibaseChangelog.value, fs, liquibaseDatabase.value)
}
作为旁注,您可能会发现SymbolHound方便 - 它是一个尊重<<=