【问题标题】:sbt retrieveManaged doesn't pick up jars produced using publish-localsbt retrieveManaged 不拾取使用 publish-local 生成的 jar
【发布时间】:2013-01-22 05:51:28
【问题描述】:

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

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

我怎样才能做到这一点? (这种行为是有意的吗?)

(我使用的是 sbt 0.12.1。)

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

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

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

    test:compile 会发现罐子丢失并自行执行update)。

    在旧版本的 sbt 中,我相信在使用 -SNAPSHOT 版本时会出现问题,但我在使用 sbt 0.12 时再也没有看到这个问题。

    在极少数情况下,Ivy 缓存会出现问题,因此您无法强制执行更新。当使用损坏的 Ivy 元数据文件时,可能就是这种情况。那么唯一的解决方案是从~/.ivy2/local~/.ivy2/cache 中清除所有出现的依赖项,重新发布并重新更新。

    【讨论】:

    • 在我对 sbt 0.12.2 进行的快速测试中,看起来本地的东西被拉入了 lib_managed。如果您可以显示需要rm -r 的情况,则可能是可以修复的错误。
    猜你喜欢
    • 2021-10-03
    • 2014-08-17
    • 1970-01-01
    • 2013-07-13
    • 2015-06-14
    • 1970-01-01
    • 2016-12-21
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多