我正在一个非常安全的地方工作,没有通过代理访问SBT通常需要的所有在线存储库。我们想要获取我们需要的依赖关系和传递依赖关系。如何强制sbt获取一次所需的所有内容?
如何强制sbt获取项目所需的所有依赖关系一次,从那里开始,只能脱机工作?我已经尝试过从家里做到这一点。然后我复制了一切下:
~/.ivy2/cache
~/.ivy2/local
$ACTIVATOR_HOME/repository
但仍SBT
即使与sbt "set offline := true" run
而被执行,并尝试获取网上的一切......是一种痛苦。然后终于休息并抱怨它没有发现一些依赖。
UPDATE:我注意到另一个麻烦来源,但还不能断定它是OP破解构建问题的罪魁祸首。我从Linux(Ubuntu box)构建并获取项目的依赖项,然后将所有文件复制到公司的Windows 7 Pro环境中。我发现在~/.ivy2/cache
下的许多属性文件指的是Ubuntu中激活器库目录的绝对路径,这在Windows env中当然是不正确的,例如,
#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
所以我去了,找到并替换,但构建仍然无法正常工作。看起来好像有一个绝妙的主意,那就是拥有数以千计的属性文件硬编码激活码位置的绝对路径。我宁愿他们使用一个环境变量。
您的任何依赖标记为“SNAPSHOT”吗? '〜/ .ivy2/cache'的全部内容是为了避免上网。这导致我认为你正在做一些事情来颠覆这种行为。 – wheaties
@wheaties,谢谢你的帮助!不,不是'SNAPSHOT's至少不是直接的,它在发布的版本上失败,而它的起源PC工作。 –
我会建议如果你复制并粘贴任何东西从一个Linux机器到一个Windows机器,你运行以下命令:'sbt clean'。是的,我知道,这就是你想要避免的,但要记住,不应该假设文件夹结构和设置在OS中是静态的。 – wheaties