在:org.scalamacros:quasiquetes中冲突的交叉版本后缀

在:org.scalamacros:quasiquetes中冲突的交叉版本后缀,scala,sbt,scala-pickling,scala-quasiquotes,scala-2.11,Scala,Sbt,Scala Pickling,Scala Quasiquotes,Scala 2.11,我试着用在一个s。我尝试创建的文件似乎也使用了pickle,但我在sbt测试中不断遇到此错误: [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: o

我试着用在一个s。我尝试创建的文件似乎也使用了pickle,但我在
sbt测试中不断遇到此错误

[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)

完整的构建日志是。我做错了什么?要解决此问题,我应该在我的系统中更改什么?我还应该能够针对
2.10.x
2.11.x

交叉编译和发布我的库。问题是,您使用的是两个不同版本的Quasikotes模块,允许定义Scala宏。您应该确保只使用一个版本,并且此单一版本与所有使用宏的依赖项相匹配

另外,您确定scala 2.11.x版本发布了scala酸洗吗?从他们的构建文件来看,他们只发布了
2.10.3
-

首先,尝试删除:

crossScalaVersions := Seq("2.10.4", "2.11.0-RC4")
然后再试一次。之后,将Scala版本设置为
2.10.3
,以便与Scala酸洗中的版本匹配

scalaVersion := "2.10.3"

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

从2.0.0-M7开始,
org.scalamacros%quasikotes
以二进制形式交叉版本(即
\u 2.10
)而不是完整版本(即
\u 2.10.x
):。看起来您的一个依赖项使用了M7之前的Quasikotes,另一个依赖项使用了M7之后的Quasikotes


我认为除了升级使用旧的Quasikote库的所有依赖项之外,这是无法修复的,因为M7之前和M7之后的Quasikote库是不兼容的。

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

顺便说一句,了解这些冲突的准语言源于何处会很有趣,这样我就可以帮助仍然使用2.0.0-M3的用户迁移(这应该和将
2.0.0-M3
更改为
2.0.0
一样简单),但仍然如此。谢谢您的回答。我只是这是答案