2013-01-21 31 views
3

假設我有一個項目,其中我使用sbt publish-local來生成~/.ivy2/local中的jar文件的本地副本。sbt retrieveManaged沒有拿起使用publish-local生成的罐子

在同一臺機器上的另一個sbt項目可以成功定位這些罐子以滿足依賴關係。但是,如果在該項目中使用選項retrieveManaged := true,sbt絕不會將~/.iv2/local中的罐子複製到lib_managed目錄中。

我該如何做到這一點? (這種行爲是故意的嗎?)

(我使用SBT 0.12.1)

回答

2

我使用的是相同的設置。當我更新我的本地出版的依存關係,我首先刪除管理罐子,然後運行更新:

$ rm -r lib_managed/jars/my-package-prefix 
$ sbt test:compile 

test:compile會找出罐子失蹤,本身做update)。

在老版本的sbt中,我認爲在使用-SNAPSHOT版本時出現了問題,但我還沒有看到sbt 0.12中的這個問題。

在極少數情況下,常青藤緩存會有些東西混亂,並且無法執行更新。這可能是使用腐敗常春藤元數據文件的情況。那麼唯一的解決方案是從~/.ivy2/local~/.ivy2/cache中擦除所有出現的依賴關係,重新發布並重新更新。

+1

在我用sbt 0.12.2做的一個快速測試中,它看起來像在本地的東西被拉入lib_managed。如果您可以顯示需要'rm -r'的情況,則可能是一個可以修復的錯誤。 –