更新(2015-07-13):
好的,所以你想要的是将所有依赖项保留在你想要的文件夹中,你可以在运行 sbt 时尝试这个,
sbt -Dsbt.ivy.home=/your/local/path/.ivy
然后它将所有依赖文件或下载的任何文件保存在/your/local/path/.ivy/cache中构建您的应用程序。
如果您想将它们保留在您的项目中,
sbt -Dsbt.ivy.home=/some/path/to/your-project/.ivy
然后文件将存储在/some/path/to/your-project/.ivy/cache文件夹中。
对了,docker不支持缓存?嗯,您为什么不尝试一些不错的 CI 服务,例如 Semaphore CI,然后让它将您的应用程序部署到 Docker? (我与 Semaphore 没有任何个人或任何其他联系。这只是我使用的服务,我尝试了大约五种不同的 CI 工具,并且最喜欢那个)。
更新(2015-07-12):哦,抱歉,您的问题不是关于使用本地存储库,而是将所有内容复制到其中。
这可能不是您所要求的,但可能可以解决您的问题。
updateOptions := updateOptions.value.withCachedResolution(true)
注意:这是一个实验性功能。
详情:sbt doc - Cached-Resolution
================================================
你可以指定仓库
resolvers += name at location
喜欢
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
所以对于本地 maven repo,你可以简单地做
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 - Library-Dependencies