在2.10.0的交叉建筑

时间:2013-03-08 02:23:35

标签: scala sbt

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

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

但是,它找不到依赖项,因为它们的名称为_2.10而不是_2.10.0。除了2.102.10.0之外,您的图书馆scala-language而不是scala-compiler的名称似乎是常规的。例如,http://repo1.maven.org/maven2/org/scalaz/scalaz-core_2.10.0/6.0.4/scalaz-core_2.10.0-6.0.4.pomhttp://repo1.maven.org/maven2/org/scalaz/scalaz-core_2.10/6.0.4/scalaz-core_2.10-6.0.4.pom处找不到scalaz。

有没有一种简单的方法来处理这个问题而无需为所有依赖项编写自定义规则?

实际的build.sbt可用online

2 个答案:

答案 0 :(得分:2)

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

顺便说一下,我查看了你的build.sbt - 正在运行的+compile对我有效(sbt 0.12.1)。你有经历过一些错误吗?

答案 1 :(得分:0)

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

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

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

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