3

我正在尝试在我的一个项目中使用scala-pickling。我试图模仿似乎也使用酸洗的宏的构建文件,但我不断收到错误:sbt test

[error] Modules were resolved with conflicting cross-version suffixes in dijon:
[error]    org.scalamacros:quasiquotes _2.10, _2.10.3
java.lang.RuntimeException: Conflicting cross-version suffixes in: org.scalamacros:quasiquotes
    at scala.sys.package$.error(package.scala:27)
    at sbt.ConflictWarning$.processCrossVersioned(ConflictWarning.scala:47)
    at sbt.ConflictWarning$.apply(ConflictWarning.scala:30)
    at sbt.Classpaths$$anonfun$61.apply(Defaults.scala:1044)
    at sbt.Classpaths$$anonfun$61.apply(Defaults.scala:1044)

完整的构建日志在这里。我究竟做错了什么?我应该在build.sbt中更改什么来解决这个问题?我还应该能够针对 和 交叉编译和发布我的2.10.x2.11.x

4

3 回答 3

3

从 2.0.0-M7 开始,org.scalamacros % quasiquotes交叉版本为二进制(即_2.10)而不是完整(即_2.10.x):http ://scalamacros.org/news/2014/04/03/macro-paradise-2.0.0-M7 .html。看起来您的一个依赖项使用了 pre-M7 quasiquotes,而另一个使用了 post-M7 quasiquotes。

除了升级所有使用旧 quasiquote 库的依赖项之外,我认为这无法以任何方式解决,因为 M7 之前和 M7 之后的 quasiquote 库不兼容。

于 2014-04-18T08:36:09.283 回答
1

问题是您正在使用允许定义 Scala 宏的两个不同版本的 quasiquotes 模块。您应该确保只使用一个版本,并且这个单一版本与您所有使用宏的依赖项相匹配。

另外,你确定 Scala-pickling 是为 Scala 2.11.x 发布的吗?从他们的构建文件来看,他们只发布了2.10.3- https://github.com/scala/pickling/blob/2.10.x/project/Build.scala#L10

首先,尝试删除:

crossScalaVersions := Seq("2.10.4", "2.11.0-RC4")

然后再试一次。之后,将 Scala 版本设置为2.10.3,使其与 scala-pickling 中的版本匹配。

scalaVersion := "2.10.3"

编辑:有关更详细的解释,请参阅下面的 Eugene 的回答。

于 2014-04-18T07:41:28.347 回答
1

根据我从spray-testkit_2.10-1.3.2中提取的dependencyGraph,specs2_2.10 v1.3.10仍在使用准引号的里程碑版本。因此,我运行了跨版本错误问题。

于 2015-03-20T16:41:32.727 回答