scala - Adding task in full build definition using SBT 0.13's new task syntax to project? -
i implemented simple task copy files project's target directory other directory:
lazy val publishfiles = taskkey[unit]("publishes files") lazy val publishfilestask = publishfiles <<= (projectid, target, streams) map { (id, targetdir, streams) => val sprint = "99" val destbasedir = "/some/folder" val destdir = new file(s"$destbasedir/sprint$sprint/${id.name}") val log = streams.log val scoveragereportdir = "scoverage-report" val coberturafilename = "cobertura.xml" if (destdir.exists) log.error(s"destination directory $destdir exists, exiting ...") else { log.info(s"copying test coverage report $destdir ...") sbt.io.createdirectory(destdir) sbt.io.copydirectory(targetdir / scoveragereportdir, destdir / scoveragereportdir, overwrite = false) sbt.io.copyfile(targetdir / "coverage-report" / coberturafilename, destdir / coberturafilename) } } the task added project's settings:
lazy val settings = ... ++ publishfilestask ++ .. and works.
now wanted change task use new task syntax (introduced in sbt 0.13.0):
lazy val publishfilestask = taskkey[unit]("publishes files") publishfilestask := { val sprint = "99" val destbasedir = "/some/folder" val destdir = new file(s"$destbasedir/sprint$sprint/${projectid.value.name}") val log = streams.value.log val scoveragereportdir = "scoverage-report" val coberturafilename = "cobertura.xml" if (destdir.exists) log.error(s"destination directory $destdir exists, exiting ...") else { log.info(s"copying test coverage report $destdir ...") sbt.io.createdirectory(destdir) sbt.io.copydirectory(target.value / scoveragereportdir, destdir / scoveragereportdir, overwrite = false) sbt.io.copyfile(target.value / "coverage-report" / coberturafilename, destdir / coberturafilename) } } so far, good. don't how add task project. if old version
lazy val settings = ... ++ publishfilestask ++ .. i'm getting error:
[error] found : sbt.taskkey[unit] [error] required: scala.collection.gentraversableonce[?] i looked @ documentation did not find solution issue. guess should pretty easy... im using sbt 0.13.0 (upgrade newer version not possible @ moment) , build script .scala build definition.
what wrote 2 different cases, if check actual types in first case you'll see: def.setting[task[unit]] , in second case: taskkey[unit], that's error comes from. you've missed part:
lazy val publishfilestask = publishfiles new 0.13 syntax change has changed applicative way of defining settings macro based. fix wrote in first version:
lazy val publishfiles = taskkey[unit]("publishes files") lazy val publishfilestask = publishfiles := { ... }
Comments
Post a Comment