将所有SBT依赖项复制到本地文件夹

我正在dockerizing我的戏! 框架应用程序,目前,我的构build需要超过15分钟才能完成。 这个过程的很大一部分,实际上是下载依赖项,因为我的构build器没有caching的概念。 我想,将我的项目需要的所有依赖项复制到本地文件夹是一个好主意,因此它不必一次又一次地下载所有的依赖项。 但问题是,我不知道该怎么做? 我知道SBT有一个function,允许你指定一个本地回购,但我不知道一个function,让我把所有的东西都复制到某个文件夹。

更新 (2015-07-13):

好吧,所以你想要的是保持所有的依赖关系在你想要的文件夹,你可以试试这个当你运行SBT,

sbt -Dsbt.ivy.home=/your/local/path/.ivy 

然后它会保留所有的依赖关系文件或下载的任何文件来构build您的应用程序在/your/local/path/.ivy/cache

如果你想让他们在你的项目中,

 sbt -Dsbt.ivy.home=/some/path/to/your-project/.ivy 

然后这些文件将被存储在/some/path/to/your-project/.ivy/cache文件夹中。

顺便说一句,docker不支持caching? 嗯,你为什么不尝试一些像Semaphore CI一样漂亮的CI服务,并让它部署你的应用程序到Docker? (我没有与Semaphore有任何个人或其他方面的联系,只是我使用的服务,我尝试了五种不同的CI工具,而且最喜欢这种工具)。

更新 (2015-07-12):哦,对不起,你的问题不是使用本地回购,而是复制一切。

这可能不是你问的,但可以解决你的问题。

 updateOptions := updateOptions.value.withCachedResolution(true) 

注意:这是一个实验性function。

详细信息: sbt文档 – caching分辨率

===============================================

您可以通过指定存储库

 resolvers += name at location 

喜欢

 resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" 

所以对于本地maven回购,你可以简单的做

 resolvers += Resolver.mavenLocal 

然而,就我而言,当我这样做时,它试图访问不正确的PROJECT_HOME/{user.home}/.m2/repository

我想要的是$HOME/.m2/repository ,这是maven本地存储库的位置。 所以我把下面的行放在build.sbt而不是Resolver.mavenLocal ,它似乎工作。

 resolvers += "mavenLocal" at s"${sys.props("user.home")}/.m2/repository" 

详细信息: sbt doc – 库依赖项

试试sbt包插件https://github.com/xerial/sbt-pack它有packCopyDependencies任务。 也许这就是你要找的。