我正在一个非常安全的项目中工作,无法通过代理访问 SBT 通常需要的所有在线存储库。我们想一次性获取我们需要的依赖项和传递依赖项。
如何强制 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
所以我去做了一个查找和替换,但构建仍然不起作用。将数千个属性文件硬编码到激活器位置的绝对路径看起来并不是一个好主意。我宁愿他们为此使用环境变量。
最佳答案
也许你可以试试 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)
但由于并行工件下载,它也比 Ivy 快得多。该项目很年轻,但很有前途。
关于scala - 如何强制 sbt 一次获取所需的一切?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42723317/