Getting project source files in custom task in sbt 0.11

I am using SBT 0.11.

I have the following build.sbtfile in an sbt project:

myAction := {
  // val srcFiles = ?
  // How can I make srcFiles a List[File] of all sources files?
  println("This is my action")
}

It works fine, but how can I access settings like all paths to Java / Scala source files, for example. src/main/scala/*.scalaand the target class directory, for example. target / scala -2.9.1 / class?

+5
source share
1 answer

define taskKey let's say

yourActionTask

then

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. you can find more predefined tasks / keys in the source code of Keys.scala or scaladoc sbt.

, , ( 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))
  }
+7

All Articles