我将游戏停靠!框架应用程序,目前,我的构建需要超过15分钟才能完成。这个过程的很大一部分实际上是下载依赖项,因为我的构建器还没有缓存的概念。我想,将我的项目所需的所有依赖项复制到本地文件夹是一个好主意,因此它不必一次又一次地下载所有内容。但问题是,我不知道该怎么做?我知道SBT有一个允许你指定本地仓库的功能,但是我不知道允许我将所有内容复制到某个文件夹的功能。
答案 0 :(得分:3)
已更新(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不支持缓存?嗯,为什么不尝试像Semaphore CI这样的优秀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回购,你可以简单地做
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"
答案 1 :(得分:0)
尝试使用sbt pack插件https://github.com/xerial/sbt-pack 它有packCopyDependencies任务。也许这就是你要找的东西。