Scala sbt中的交叉建筑与2.10.0

Scala sbt中的交叉建筑与2.10.0,scala,sbt,Scala,Sbt,我正在用sbt 12.1交叉构建一个scala项目 crossScalaVersions := Seq("2.9.2", "2.10.0") 但是,它找不到依赖项,因为它们的名称为\u 2.10而不是\u 2.10.0。将库命名为2.10而不是2.10.0似乎是很正常的,除了scala语言和scala编译器。例如,scalaz不是在中找到的,而是在中找到的 有没有一种简单的方法可以在不为所有依赖项编写自定义规则的情况下处理此问题 实际build.sbt可用。要以Scala方式将Scala版本合

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

crossScalaVersions := Seq("2.9.2", "2.10.0")
但是,它找不到依赖项,因为它们的名称为
\u 2.10
而不是
\u 2.10.0
。将库命名为
2.10
而不是
2.10.0
似乎是很正常的,除了
scala语言
scala编译器
。例如,scalaz不是在中找到的,而是在中找到的

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


实际build.sbt可用。

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

libraryDependencies += "io.backchat.jerkson" %% "jerkson" % "0.7.0"
当精确匹配不可用时,可以显式指定Scala版本(但请记住,兼容性仅存在于给定Scala主要/次要版本的修补程序版本之间):


由于
2.10.x
版本之间是二进制兼容的,因此库只需要使用一个版本的scala库来构建-它们可以(而且必须)删除
.0
部分(如果使用sbt发布,则会自动完成)。当一个库的维护者发布一个带有<代码> > 2.1.0标签的库时,这是一个错误,您应该考虑提交一个bug。
顺便说一句,我查看了你的
build.sbt
——在它上运行
+compile
,这对我很有用(sbt0.12.1)。您是否遇到一些错误?

是的,我在指定的pom文件中执行此操作。问题是我交叉验证了2.10.0,但依赖项使用了2.10(没有尾随的.0)。我还注意到有些库的后缀是
2.10
,有些库的后缀是
2.10.0
,我发现这很不幸。当时我可能没有注意到,但我不记得Scala 2.8和2.9也遇到过类似的问题。换句话说,它们都是特例-(对于旧版本的sbt(它不提供
-version
的版本信息)我得到一个例外,许多
2.10.0
库找不到。但是升级到
sbt
0.12.1
后,它会正确地删除二进制兼容的版本号并查找
2.10
libraryDependencies += "io.backchat.jerkson" % "jerkson_2.9.2" % "0.7.0"