2012-07-06 56 views
3

我无法根据OneJar任务获取新的SBT任务“安装”。这是我的Build.scala文件:获取SBT任务以依赖于OneJar任务

import sbt._ 
import Keys._ 
import com.github.retronym.SbtOneJar._ 

object BuildBroBuild extends Build { 
    val install = TaskKey[Unit]("install", "Installs the JAR and a launcher script into your homedir") 

    private def installTask = task { 
    println("Hello world!") 
    } 

    override lazy val settings = super.settings ++ 
    Seq(install <<= (oneJar in Global)(installTask dependsOn(_))) 

    lazy val root = Project(id = "buildbro", 
          base = file("."), 
          settings = Project.defaultSettings) 
} 

这里就是我得到的错误:

[error] Reference to undefined setting: 
[error] 
[error] */*:one-jar from {.}/*:install 
[error]  Did you mean *:one-jar ? 
[error] 

有谁知道这是什么意思?我相信我必须以不同的方式来确定oneJar TaskKey的范围。谢谢你尽你所能的帮助。

回答

1

我觉得这样的事情应该工作:

object BuildBroBuild extends Build { 
    val install = TaskKey[Unit]("install", "Installs the JAR and a launcher script into your homedir") 

    private lazy val installTask = install <<= (oneJar, streams) map { case (a, s) => { 
    // 'a' is the output from the onejar task (ie, the artifact) 
    println("Hello world!") 
    } 

    override lazy val settings = super.settings ++ 
    Seq(installTask) 

    lazy val root = Project(id = "buildbro", 
          base = file("."), 
          settings = Project.defaultSettings) 
} 

在这里,我们所走的oneJar任务的输出(以及streams,允许伐木等)作为我们的新任务的输入。