在sbt 0.10下收集依赖项(将所有依赖项jar放到target/scala-version/lib /)

art*_*raz 8 scala sbt

我正在使用sbt 0.10和Scala 2.9.1.

我已阅读 http://groups.google.com/group/simple-build-tool/browse_thread/thread/792e5360877e78/987b6af687b8e33b?lnk=gst&q=collect+jars#987b6af687b8e33b

但是我不想要一个巨大的罐子.我只是希望依赖jar在target/scala-2.9.1.final/lib目录中结束.

之所以我不想要一个巨大的jar,那个项目使用了很多lib,而且通常只有应用程序.jar会发生变化.然而,由于这是多语言项目,并非所有团队成员都有scala或sbt,因此jars只是提交给git.拥有一个巨大的dar更新规则将膨胀回购规模.

我该如何复制这些依赖项?;)

Fre*_*ois 14

您没有指定复制配置的常春藤配置,但这是一个完整的工作示例,它将所有托管依赖项复制到该target/<scala version>/lib文件夹(scala版本由crossTarget任务提供).只需复制它并将其放入文件project/Build.scala(或任何您想要的文件名):

import sbt._
import Keys._

object MyBuild extends Build {

  lazy val copyDependencies = TaskKey[Unit]("copy-dependencies")

  def copyDepTask = copyDependencies <<= (update, crossTarget, scalaVersion) map {
    (updateReport, out, scalaVer) =>
    updateReport.allFiles foreach { srcPath =>
      val destPath = out / "lib" / srcPath.getName
      IO.copyFile(srcPath, destPath, preserveLastModified=true)
    }
  }

  lazy val root = Project(
    "root",
    file("."),
    settings = Defaults.defaultSettings ++ Seq(
      copyDepTask
    )
  )
}

Run Code Online (Sandbox Code Playgroud)

如果需要特定配置,请替换

updateReport.allFiles通过updateReport.select(configuration = Set("compile"))或任何常春藤配置你想要的.