【问题标题】:Getting an SBT task to depend on the OneJar task让 SBT 任务依赖于 OneJar 任务
【发布时间】:2012-07-07 03:57:59
【问题描述】:

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

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 的范围。感谢您提供的任何帮助。

【问题讨论】:

    标签: scala sbt


    【解决方案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)作为我们新任务的输入。

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2020-05-15
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2013-07-09
      相关资源
      最近更新 更多