4

我正在使用 sbt 12.1 交叉构建一个 scala 项目。

crossScalaVersions := Seq("2.9.2", "2.10.0")

但是,它找不到依赖项,因为它们被命名为_2.10not _2.10.0。命名您的库似乎很常见,而2.10不是2.10.0and 。例如,scalaz 不在http://repo1.maven.org/maven2/org/scalaz/scalaz-core_2.10.0/6.0.4/scalaz-core_2.10.0-6.0.4.pom但在http:// /repo1.maven.org/maven2/org/scalaz/scalaz-core_2.10/6.0.4/scalaz-core_2.10-6.0.4.pomscala-languagescala-compiler

有没有一种简单的方法可以在不为我的所有依赖项编写自定义规则的情况下处理这个问题?

实际的 build.sbt 可以在线获得。

4

2 回答 2

2

由于2.10.x版本彼此之间是二进制兼容的,因此库只需要使用一个版本的 scala 库来构建——并且它们可以(并且必须)删除该.0部分(如果您使用 sbt 发布,它会自动完成)。当一个库的维护者发布一个带有_2.10.0标签的库时,这是一个错误,你应该考虑提交一个错误。

顺便说一句,我看了你的build.sbt- 运行+compile它对我有用(sbt 0.12.1)。您是否遇到一些错误?

于 2013-03-09T13:19:54.367 回答
0

要以 Scala 方式将 Scala 版本合并到工件名称中,请使用%%运算符指定依赖项:

libraryDependencies += "io.backchat.jerkson" %% "jerkson" % "0.7.0"

当完全匹配不可用时,您可以明确指定 Scala 版本(但请记住,兼容性仅存在于给定 Scala 主要/次要版本的补丁版本之间):

libraryDependencies += "io.backchat.jerkson" % "jerkson_2.9.2" % "0.7.0"
于 2013-03-08T02:44:16.440 回答