scala – 如何强制sbt获取它需要的一切?

我正在一个非常安全的地方工作,没有通过代理访问SBT通常需要的所有在线存储库.我们想要获取一次我们需要的依赖项和传递依赖项.

如何强制获取项目所需的所有依赖项,从那里开始,只能脱机工作?我试过在家做这件事.然后我复制了以下所有内容:

~/.ivy2/cache
~/.ivy2/local
$ACTIVATOR_HOME/repository

但仍然SBT甚至在执行sbt“set offline:= true”时运行并尝试在线获取所有内容……真是太痛苦了.然后最后打破并抱怨它没有找到一些依赖.

更新:我注意到另一个麻烦的来源,但还不能断定它是OP破坏构建问题的罪魁祸首.我从Linux(Ubuntu框)构建并获取项目的依赖项,然后将所有文件复制到公司的Windows 7 Pro环境中.我发现〜/ .ivy2 / cache下的许多属性文件引用了Ubuntu中激活器存储库目录的绝对路径,这在Windows环境中当然是不正确的,例如:

#ivy cached data file for ch.qos.logback#logback-classic;1.1.3
#Fri Mar 10 08:39:37 CET 2017
artifact\:ivy\#ivy.original\#xml\#-1844423371.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/ivys/ivy.xml
artifact\:ivy\#ivy\#xml\#1016118566.is-local=true
artifact\:ivy\#ivy\#xml\#1016118566.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/ivys/ivy.xml
artifact\:ivy\#ivy.original\#xml\#-1844423371.is-local=true
artifact\:ivy\#ivy\#xml\#1016118566.exists=true
artifact\:logback-classic\#jar\#jar\#804750561.is-local=true
artifact\:logback-classic\#jar\#jar\#804750561.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/jars/logback-classic.jar
artifact\:ivy\#ivy.original\#xml\#-1844423371.exists=true
artifact\:logback-classic\#jar\#jar\#804750561.exists=true

所以我去做了一个查找和替换,但构建仍然无法正常工作.将成千上万的属性文件硬编码到激活器位置的绝对路径看起来并不是一个好主意.我宁愿他们使用环境变量.

最佳答案 也许你可以试试
coursier

不仅它提供

better offline mode – one can safely work with snapshot dependencies if these are in cache (SBT tends to try and fail if it cannot check for updates)

但由于并行工件下载,它也比常春藤快得多.该项目虽然年轻但充满希望.

点赞