如何强制 sbt 获取它需要的所有东西一次?
How to force sbt to fetch everything it needs once?
我在一个非常注重安全的地方从事一个项目,无法通过代理访问 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 快得多。这个项目虽然年轻但很有前途。
我在一个非常注重安全的地方从事一个项目,无法通过代理访问 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 快得多。这个项目虽然年轻但很有前途。