我正在一個非常安全的地方工作,沒有通過代理訪問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