sbt retrieveManaged不会选择使用publish-local生成的jar

时间:2013-01-21 04:25:35

标签: scala sbt

假设我有一个项目,我使用sbt publish-local生成~/.ivy2/local中jar文件的本地副本。

同一台机器上的另一个sbt项目可以成功找到这些jar以满足依赖关系。但是,如果在该项目中我使用选项retrieveManaged := true,则sbt永远不会将~/.iv2/local中的jars复制到lib_managed目录中。

  

我怎样才能实现这一目标? (这种行为是否打算?)

(我正在使用sbt 0.12.1。)

1 个答案:

答案 0 :(得分:2)

我使用相同的设置。当我更新本地发布的依赖项时,首先删除托管jar,然后运行更新:

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

test:compile会发现罐子丢失并且自己做update

在早期版本的sbt中,我认为使用-SNAPSHOT版本时会出现问题,但是我没有再看到这个问题,而sbt 0.12。

在极少数情况下,有些东西会与常春藤缓存混淆,并且无论如何都无法强制执行更新。当使用损坏的Ivy元数据文件时可能就是这种情况。然后唯一的解决方案是从~/.ivy2/local~/.ivy2/cache删除所有出现的依赖项,重新发布并重新更新。