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