【问题标题】:Dynamic libraryDependencies in sbt 0.13 does not work?sbt 0.13 中的动态库依赖项不起作用?
【发布时间】:2013-12-11 23:47:10
【问题描述】:

我正在使用 sbt 0.13 构建多个 Java 项目。项目 A 在 $HOME/maven2.artifacts/www/x/y/abc/1.0.1/abc-1.0.1.jar 中使用默认的“sbt publish”任务发布一个库“abc”。它工作正常,图书馆如预期的那样。

项目 B 依赖于这个工件。它声明了一个解析器(所有代码来自build.sbt):

resolvers ++= Seq(
  "Developer's repo" at "file://"+Path.userHome.absolutePath+"/maven2.artifacts/www"
)

...和一个参考值:

val abc_core = "x.y" % "abc" % "1.0.1"

然后,它在项目定义中使用引用:

lazy val def_symbol=project settings(
  name:="def-symbol",
  libraryDependencies += abc_core
)

这行得通。但是,当我按照 sbt 文档的建议将值定义更改为使用动态修订 ID 时,将其设置为

val abc_core = "x.y" % "abc" % "1.0.+"

val abc_core = "x.y" % "abc" % "1.+"

它不再起作用了:

[warn]  module not found: x.y#abc;1.+
[warn] ==== local: tried
[warn]   /home/dh/.ivy2/local/x.y/abc/[revision]/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/x/y/abc/[revision]/abc-[revision].pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: x.y#abc;1.+: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

我看到 sbt 似乎没有向我的基于文件的解析器询问依赖关系。那是问题吗?我该如何解决?

【问题讨论】:

    标签: dependencies sbt


    【解决方案1】:

    嗯,

    问题解决了。我必须在全局范围内声明解析器扩展,以便子项目也使用它:

    resolvers in Global ++= Seq(
      "Developer's repo" at "file://"+Path.userHome.absolutePath+"/maven2.artifacts/www"
    )
    

    然后项目def_symbol 也使用“开发者的repo”并且一切都与"1.0.+""1.+" 等版本完全一样。

    在全局范围内没有可用的解析器,但仍然可以解析库,这是因为 1.0.1 版在 Ivy 的本地缓存中从另一个构建中可用。从头开始,它也行不通。

    抱歉打扰了。我应该再等一天再发帖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 2013-12-08
      • 2019-04-11
      • 1970-01-01
      • 2016-06-19
      • 2013-10-19
      • 2013-08-26
      相关资源
      最近更新 更多