sbt 0.13中的动态库依赖项不起作用?

时间:2013-11-26 17:19:48

标签: dependencies sbt

我正在使用sbt 0.13构建多个Java项目。项目A使用默认的“sbt publish”任务在$ HOME / maven2.artifacts / www / x / y / abc / 1.0.1 / abc-1.0.1.jar中发布库“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
)

这很有效。但是,当我将值定义更改为使用动态修订ID时,sbt文档建议将其设置为

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似乎没有要求我的基于文件的解析器的依赖项。那是问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:2)

那么,

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

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

然后,项目def_symbol也会使用“开发人员的回购”,并且所有内容都与"1.0.+""1.+"等版本完全一致。

没有全局范围内的解析器可用,但让库解析工作仍然是因为版本1.0.1可以从另一个版本的Ivy的本地缓存中获得。从头开始,它也不起作用。

对不起噪音。我应该在发布之前再等一天。