我在一个非常安全的地方工作,没有通过代理访问SBT通常需要的所有在线存储库。我们想要获取一次所需的依赖项和传递依赖项。
如何强制获取项目所需的所有依赖项,从那里开始,只能脱机工作?我试过在家做这件事。然后我复制了下面的所有内容:
~/.ivy2/cache
~/.ivy2/local
$ACTIVATOR_HOME/repository
但即使用SBT
执行也仍然sbt "set offline := true" run
并尝试在线获取所有内容......真是太痛苦了。然后最后打破并抱怨它没有找到一些依赖。
更新:我注意到另一个麻烦的来源,但还不能断定它是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
所以我去找了一个找到并替换但是构建仍然没有用。将成千上万的属性文件硬编码到激活器位置的绝对路径看起来并不是一个好主意。我宁愿他们使用环境变量。
答案 0 :(得分:1)
也许你可以试试coursier? 不仅它提供
更好的离线模式 - 如果它们在缓存中,可以安全地使用快照依赖项(如果无法检查更新,SBT往往会尝试失败)
但由于并行工件下载,也比Ivy快得多。该项目虽然年轻但很有希望。