有没有一种简单的方法可以将所有jar依赖项复制到XSBT 0.11.2中的某个目录?

时间:2012-03-01 15:19:01

标签: scala sbt

当从旧版本的SBT切换到最新版本时,我们失去了快速获取所有jar依赖项并将其复制到目录的能力。在XSBT 0.11.2中有一种简单的方法吗?

4 个答案:

答案 0 :(得分:36)

将以下内容添加到build.sbt将所有依赖项复制到项目根目录中的lib_managed文件夹中。

retrieveManaged := true

这就是你要求的吗?

答案 1 :(得分:3)

我们使用与此类似的自定义任务定义来复制jar。我不知道这是否是推荐的方法 - 那里有一个不丑的collect。如果您愿意,可以随意发布改进(或在线修改我的答案)。

copyJarsFolder <<= (crossTarget in (Compile, packageBin)).apply(_ / "jars")

copyJars <<= inputTask { (argTask: TaskKey[Seq[String]]) =>
  (copyJarsFolder, dependencyClasspath in Compile) map { (folder, cpEntries) =>
    ("mkdir -p " + folder).!
    //
    // find all dependencies
    val jars = cpEntries.collect {
      case attrFile if attrFile.metadata.keys.exists(_.label == "artifact") =>
        // probably an external jar
        attrFile.data
    }
    val copyCmd = jars.mkString("cp -p ", " ", " " + folder)
    copyCmd.!
    folder
  }
}

答案 2 :(得分:3)

另见:How to declare a project dependency in SBT 0.10?

是的,你添加

retrieveManaged := true

您将看到lib_managed文件夹中的jar

答案 3 :(得分:0)

也许我对这个问题的回答可以帮助你:Is there a way to get all dependencies of the project via sbt plugin? 这是我所知道的最简单的方法(我使用的是sbt 0.11.2)。