似乎无法在SBT中找到如何做这个非常简单的事情:我想打包(或打包/汇编/存档/复制)运行测试所需的所有依赖项。理想情况下,这将包括所有依赖项jar和项目类jar在某些tar / gz / zip中,但只是将它们复制到一个文件夹中,这样我就可以轻松地将它们压缩起来会很棒。到目前为止,我发现的只是简单列出类路径的能力(' show test:dependencyClasspath')但是这让我不得不编写一个脚本来复制或归档它们。 sbt-pack非常适合常规运行时类路径依赖,但无法使其与任何测试依赖项一起使用,并且与sbt-assembly有相同的问题。
答案 0 :(得分:0)
如果需要,可以通过覆盖一些选定的设置来重用sbt-pack的大多数部分来引用测试类路径。
在您的构建中,添加:
packSettings
packAllClasspaths <<= (thisProjectRef, buildStructure) flatMap getFromAllProjects(dependencyClasspath in Test),
packAllUnmanagedJars <<= (thisProjectRef, buildStructure, packExclude) flatMap getFromSelectedProjects(unmanagedJars in Test),
packLibJars <<= (thisProjectRef, buildStructure, packExclude) flatMap getFromSelectedProjects(packageBin in Test)
但是,您还需要从sbt-pack代码中复制those methods以使其正常工作。 这可能不是最干净的方法,但是你要避免自己重新实施包装过程。
IMO,您最好的选择是使用sbt-native-packager,它可以更灵活地定义您的包和您放入其中的文件。