我正在尝试在scala-pickling之一中使用my project。我尝试mimic macroid的构建文件似乎也使用了酸洗但我在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)
完整版本日志为here。我究竟做错了什么?我应该在build.sbt中更改哪些内容以解决此问题?我也应该能够针对2.10.x
和2.11.x
交叉编译和发布我的库。
答案 0 :(得分: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。看起来你的一个依赖项使用了M7之前的准引号,另一个使用了M7之后的准引号。
我认为除了升级使用旧的quasiquote库的所有依赖项之外,我不认为这可以解决,因为M7之前和M7之后的quasiquote库是不兼容的。
答案 1 :(得分:1)
问题是您正在使用两个不同版本的quasiquotes模块,它允许定义Scala宏。您应确保仅使用单个版本,并且此单个版本与使用宏的所有依赖项匹配。
另外,你确定scala 2.11.x发布了scala-pickling吗?从他们的构建文件判断,他们仅针对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的答案。
答案 2 :(得分:1)
根据我的依赖格拉夫来自spray-testkit_2.10-1.3.2,specs2_2.10 v1.3.10仍在使用quasiquotes的里程碑版本。因此,我运行了交叉版本错误问题。