J'obtiens cette erreur lorsque j'essaie de compiler un projet Scala dans sbt.
Modules were resolved with conflicting cross-version suffixes in {file:/home/seven3n/caja/Flujo_de_caja/}flujo_de_caja:
[error] com.typesafe.akka:akka-actor _2.11, _2.10
[error] org.scalaz:scalaz-effect _2.10, _2.11
[error] org.scalaz:scalaz-core _2.10, _2.11
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) Conflicting cross-version suffixes in: com.typesafe.akka:akka-actor, org.scalaz:scalaz-effect, org.scalaz:scalaz-core
Voici mon fichier build.sbt:
scalaVersion := "2.11.0"
resolvers ++= Seq(
"Sonatype snapshots repository" at "https://oss.sonatype.org/content/repositories/snapshots/",
"Spray repository" at "http://repo.spray.io/",
"Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
)
libraryDependencies ++= {
val akkaVersion = "2.3.2"
val sprayVersion = "1.3.1-20140423"
val sprayJsonVersion = "1.2.6"
val reactiveMongoVersion = "0.11.0-SNAPSHOT"
val scalaTestVersion = "2.1.5"
val specs2Version = "2.3.11"
val foloneVersion = "0.12-SNAPSHOT"
Seq(
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-testkit" % akkaVersion,
"io.spray" %% "spray-can" % sprayVersion,
"io.spray" %% "spray-routing" % sprayVersion,
"io.spray" %% "spray-testkit" % sprayVersion,
"io.spray" %% "spray-json" % sprayJsonVersion,
"org.reactivemongo" % "reactivemongo_2.10" % reactiveMongoVersion,
"org.scalatest" %% "scalatest" % scalaTestVersion % "test",
"org.specs2" %% "specs2" % specs2Version % "test",
"info.folone" % "poi-scala_2.10" % foloneVersion
)
}
Aucune suggestion?
Les conflits apparaissent parce que:
Le correctif consiste à utiliser le %%
opérateur également pour ces deux bibliothèques.
"org.reactivemongo" %% "reactivemongo" % reactiveMongoVersion,
"info.folone" %% "poi-scala" % foloneVersion
C'est le but du %%
opérateur. Pour ajouter la version Scala version (2.11 dans votre cas) déclarée au nom de l'artefact).
J'ai eu le même problème et j'ai simplement supprimé la balise scalaVersion de mon fichier sbt et modifié la ligne
libraryDependencies += "org.Apache.spark" %% "spark-core" % "1.6.0"
à
libraryDependencies += "org.Apache.spark" % "spark-core_2.11" % "1.6.0"
et le problème a disparu.
J'ai essayé d'utiliser %% mais cela n'a pas fonctionné. Je l'ai exclu manuellement en utilisant
("org.reactivemongo" % "reactivemongo" % reactiveMongoVersion)
.exclude("com.typesafe.akka", "akka-actor_2.10")
.exclude("org.scalaz", "scalaz-effect")
.exclude("org.scalaz", "scalaz-core")
Pour rechercher qui est l'appelant, vous pouvez utiliser un plug-in, mais un moyen plus simple d'examiner target/scala-2.*/resolution-cache/reports/
. Il existe un rapport de résolution Ivy pour chaque configuration. Chercher *-compile.xml
et *-test.xml
et recherchez la bibliothèque en conflit. Vous pouvez voir similaire avec
<module organisation="com.github.nscala-time" name="nscala-time_2.11">
...
<caller organisation="com.tumblr" name="colossus-metrics_2.11" conf="compile, runtime" rev="1.2.0" rev-constraint-default="1.2.0" rev-constraint-dynamic="1.2.0" callerrev="0.7.2-RC1"/>
...
</module>
Cela devrait vous indiquer l'appelant du module.