【发布时间】:2013-02-10 22:30:50
【问题描述】:
随着 Scala 2.10.1 即将推出,我相信,我想确保我现在发布的工件能够自动使用该版本的 scala-library.jar。我使用 sbt 0.12.2 发布,并且设置为
scalaVersion := "2.10.0"
我正确地将二进制兼容版本附加到我的工件,例如
<artifactId>mylibrary_2.10</artifactId>
...但是 scala 库依赖项仍然显示 2.10.0:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.0</version> <!-- !!! -->
</dependency>
我想这不正确,这里应该使用 2.10 或 2.10.+?
我也尝试添加scalaBinaryVersion := "2.10",但这似乎没有任何改变。
我的另一个想法是使用scalaVersion := "2.10.+"。 Sbt 与Getting Scala 2.10.+ ... 一起使用很长时间,但它最终运行良好,pom 现在为 scala-library.jar 提供了这个版本。所以也许这是正确的方法?
【问题讨论】:
-
显然“交叉构建”更常见。请参阅scala-sbt.org/release/docs/Detailed-Topics/Cross-Build 了解更多信息。我无法告诉您您找到的解决方案是否正确。
-
好吧,我现在可以说的一件事是
2.10.+增加了严重的问题。我刚刚发现自己在随机位置出现打字错误,直到我发现某些项目已经以某种方式绘制了一个 scala-compiler.jar2.10.1-RC1,这显然是不兼容二进制。 -
好吧,Scala 库的版本等于您所针对的 Scala 版本,因为 2.10.1 版的 scala-library 与 2.10.0 版的 scala-library 不同。所有 Scala 2.10 版本都应该是二进制兼容的。您能否发布从 2.10.0 切换到 2.10.1 时遇到的错误类型?
-
它们是典型的二进制问题错误,例如找不到方法或访问错误。这只是因为一些 RC 版本加入了,我想是从 scala-actors 那里得到的,我不记得了。现在 2.10.1 已经发布,我可以观察混合 2.10.0 和 2.10.1 的行为。基本上它是“好的”,但我从 sbt 收到了一堆恼人的警告消息,即不同的人工制品使用不同的 scala-lang 版本(2.10.0 与 2.10.1)。我现在只是忽略它们,看起来很好。