2014-03-03 61 views
1

这是我的任务。除了swager罐子之外,它应该从战争的lib中移除所有的东西。SBT:无法定义任务

packageCleanWar := { 
    val war: File = (packageWar in Compile).value 
    val tmpDir = target.value/"tmp" 
    val warPath = war.getAbsolutePath 
    val nf = (s: String) => s match { 
    case s if s.startsWith("WEB-INF/lib/swagger") => true 
    case s if s.startsWith("WEB-INF/lib/") => false 
    case _ => true 
    } 
    IO.unzip(war, tmpDir, NameFilter.fnToNameFilter(nf)) 
    IO.delete(war) 
    val newWar = new File(warPath) 
    IO.zip(Path.allSubpaths(tmpDir), newWar) 
    newWar 
} 

虽然试图加载它,我收到以下

C:\work\project\server\build.sbt:55: error: not found: value packageCleanWar 
packageCleanWar := { 
^ 
[error] Type error in expression 

allthough我在提到here相同的风格定义它。我做错了什么?

回答

2

您需要声明的任务,以及定义它:

lazy val packageCleanWar = taskKey[File]("packageCleanWar description") 

packageCleanWar := { 
    val war: File = (packageWar in Compile).value 
    val tmpDir = target.value/"tmp" 
    val warPath = war.getAbsolutePath 
    val nf = (s: String) => s match { 
    case s if s.startsWith("WEB-INF/lib/swagger") => true 
    case s if s.startsWith("WEB-INF/lib/") => false 
    case _ => true 
    } 
    IO.unzip(war, tmpDir, NameFilter.fnToNameFilter(nf)) 
    IO.delete(war) 
    val newWar = new File(warPath) 
    IO.zip(Path.allSubpaths(tmpDir), newWar) 
    newWar 
} 

这是Tasks