有一个有用的SBT插件用于格式化许可证标题: https://github.com/Banno/sbt-license-plugin
从0.1.0开始,它只在Compile"中格式化" scalaSource:
object Plugin extends sbt.Plugin {
import LicenseKeys._
object LicenseKeys {
lazy val formatLicenseHeaders = TaskKey[Unit]("formatLicenseHeaders", "Includes the license header to source files")
…
}
def licenseSettings = Seq(
formatLicenseHeaders <<= formatLicenseHeadersTask,
…
)
…
private def formatLicenseHeadersTask =
(streams, scalaSource in Compile, license in formatLicenseHeaders, removeExistingHeaderBlock in formatLicenseHeaders) map {
(out, sourceDir, lic, removeHeader) =>
modifySources(sourceDir, lic, removeHeader, out.log)
}
我写了一个pull请求,我将其概括为格式化用于编译和测试的java和scala源:
https://github.com/Banno/sbt-license-plugin/blob/master/src/main/scala/license/plugin.scala
private def formatLicenseHeadersTask = Def.task[Unit] {
formatLicenseHeadersTask1.value
formatLicenseHeadersTask2.value
formatLicenseHeadersTask3.value
formatLicenseHeadersTask4.value
}
任务formatLicenseHeadersTask1234对应于{scala,java} Source和{Compile,Test}的组合。
这有效,但它真的很难看。有没有办法用循环写下相同的东西,如下图所示?
for {
src <- Seq( scalaSource, javaSource )
kind <- Seq( Compile, Test )
…
}