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

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -