2012-07-06 70 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,允許伐木等)作爲我們的新任務的輸入。