簡體   English   中英

使用SBT和SNAPSHOT依賴項脫機工作

[英]Working offline with SBT and SNAPSHOT dependencies

在任何項目中,我都無法使用SBT脫機工作。 現在我正處於行動中,我的衣櫃服務器托管nexus處於脫機狀態。

所以跑步說:

sbt "set offline := true" run

我得到了其他缺少的deps:

[error] unresolved dependency: se.hedefalk#lift-utils_3.0_2.10;0.2-SNAPSHOT: not found

對於聲明為的依賴:

"se.hedefalk"       %% ("lift-utils_"+liftEdition) % ("0.2-SNAPSHOT"),

但我確實在我的常春藤緩存中有依賴:

$ ll ~/.ivy2/cache/se.hedefalk/lift-utils_3.0_2.10/
total 32
drwxr-xr-x  8 viktor  staff   272B Mar 14 11:36 ./
drwxr-xr-x  5 viktor  staff   170B Mar  8 10:38 ../
drwxr-xr-x  3 viktor  staff   102B Mar 14 11:36 docs/
-rw-r--r--  1 viktor  staff   4.5K Mar  4 15:54 ivy-0.2-SNAPSHOT.xml
-rw-r--r--  1 viktor  staff   4.0K Mar  4 15:54 ivy-0.2-SNAPSHOT.xml.original
-rw-r--r--  1 viktor  staff   1.8K Mar 14 11:36 ivydata-0.2-SNAPSHOT.properties
drwxr-xr-x  3 viktor  staff   102B Mar  8 10:38 jars/
drwxr-xr-x  3 viktor  staff   102B Mar 14 11:36 srcs/

應該不夠嗎? 整套“離線:=真”從來沒有對我有任何影響。 依賴解析似乎發生在之前。

我現在真的需要這個工作。 多年來我一直遇到這個問題,但現在我處於根本無法工作的境地。

在這里: http//www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Dependency-Management-Flow.html

我讀

當離線:= true時,遠程SNAPSHOT將不會通過分辨率更新,即使是明確請求的更新。 這應該有效地支持在沒有連接到遠程存儲庫的情況下工作。 可以理解以其他方式證明的可重復示例。 顯然,更新必須在脫機之前成功運行。

我可能不正確地理解這一點,但是它說我不應該有我的問題嗎?

我有同樣的問題使用:

> sbt "skip in update := true" run

使用sbt 0.13.5

編輯:

讓我的repo再次在線,解析所有deps然后只是將我的wifi設置為離線我可以退出sbt然后運行它。 但是,只需運行;重新加載;清理;編譯,然后我再次啟動。 如果我退出,我甚至根本無法開始。 在我可以嘗試使用依賴關系樹或類似方法分析依賴關系圖之前,項目的依賴關系解決方案已經發生。 即使不在線,這也是非常惱人的,如果說,試圖了解失敗的傳遞依賴來自何處。

這似乎是一個可怕的黑客攻擊,但您可以將常春藤緩存指定為常春藤存儲庫,這樣一旦下載了依賴項,就可以從緩存中解析它們。

例如,你的〜/ .sbt / repositories可能如下所示:

[repositories]
  local
  maven-central
  cache: file://${user.home}/.ivy2/cache, [organisation]/[module]/ivy-[revision].xml, [organisation]/[module]/[type]s/[module]-[revision].[type]

注意:我必須明確設置常春藤和工件模式。 在任何其他repos下面添加本地緩存,以便首先嘗試它們。

我也不能在單行中使用它。

但是,如果我開始sbt然后在sbt我使用set offline := true它運行良好。

這里有一個wiki頁面: https//github.com/sbt/sbt/wiki/User-Stories :--Offline-mode-and-Dependency-Locking,在5月編輯,說SBT的離線概念是'工作正常。 這可能是您的構建繼續嘗試解析遠程存儲庫的依賴性的一個原因,即使設置了offline設置也是如此。

從sbt 0.13.7開始,您可以在使用依賴關系緩存時脫機工作

簡而言之:

  • 在項目設置中(以及在所有子項目設置中)添加updateOptions := updateOptions.value.withCachedResolution(true)
  • 運行sbt clean compile在線sbt clean compile一次。 它像以前一樣運行,檢查所有分辨率。 但是也可以在本地創建和存儲已解析的依賴圖(在~/.sbt/0.13/dependency )。

然后,如果您不更改您的依賴項,sbt將始終使用緩存的依賴項,並且不需要網絡(我剛試過)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM