定義taskKey,說
yourActionTask
然後
yourActionTask <<= (baseDirectory, target, packageBin in Compile, resources in Compile...) map { (basedir, targetDir, bin, res...)=>
// use these resources to complete your task as per your needs
}
BTW。您可以在Keys.scala源代碼或sbt的scaladoc中找到更多預定義的任務/密鑰。
這裏是你可以參考這是從我的構建文件的一個提取的例子(只是結合TaskKey和任務定義在一起,因爲我不打擾,我會重用TaskKey在未來):
val distTask = TaskKey[Unit]("dist", "distribute the deployment package of eromanga") <<= (baseDirectory, target, fullClasspath in Compile, packageBin in Compile, resources in Compile, streams) map {
(baseDir, targetDir, cp, jar, res, s) =>
s.log.info("[dist] prepare distribution folders...")
val assemblyDir = targetDir/"dist"
val confDir = assemblyDir/"conf"
val libDir = assemblyDir/"lib"
val binDir = assemblyDir/"bin"
Array(assemblyDir, confDir, libDir, binDir).foreach(IO.createDirectory)
s.log.info("[dist] copy jar artifact to lib...")
IO.copyFile(jar, libDir/jar.name)
s.log.info("[dist] copy 3rd party dependencies to lib...")
cp.files.foreach(f => if (f.isFile) IO.copyFile(f, libDir/f.name))
s.log.info("[dist] copy shell scripts to bin...")
((baseDir/"bin") ** "*.sh").get.foreach(f => IO.copyFile(f, binDir/f.name))
s.log.info("[dist] copy configuration templates to conf...")
((baseDir/"conf") * "*.xml").get.foreach(f => IO.copyFile(f, confDir/f.name))
s.log.info("[dist] copy examples chanenl deployment...")
IO.copyDirectory(baseDir/"examples", assemblyDir/"examples")
res.filter(_.name.startsWith("logback")).foreach(f => IO.copyFile(f, assemblyDir/f.name))
}
謝謝!它像一個魅力。 :) –
我不明白。哪一個參數是Scala資源的列表????? – pathikrit