9

I have a Play project that uses a library that has recently been ported to Scala 2.11.1.

I have also updated Play to Scala 2.11.1.

When I try to run the project, I get:

[error] Modules were resolved with conflicting cross-version suffixes in {file:/...}:
[error]    org.scalaz:scalaz-core _2.11, _2.10
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) Conflicting cross-version suffixes in: org.scalaz:scalaz-core

I tried to detect which is the library that uses scalaz-core-2.10 using sbt-dependency-graph plugin. However, in the dependency graph tree, there is only one appearance of scalaz-core:

info]   | +-org.scalaz:scalaz-core_2.11:7.0.6

So I am not sure which is the library that uses scalaz-core_2.10...How can I detect it?

I have seen here that once I detect it, I could exclude it, but my problem is how to detect which is dependency that I have to exclude.

Community
  • 1
  • 1
Labra
  • 1,412
  • 1
  • 13
  • 33
  • I recently had the same problem with Akka, it turned out I had put % instead of %% in the Spray dependency. Fixing that fixed the problem. I would check my build.sbt and check that all Scala libraries have %% – Mario Camou Jul 08 '14 at 17:10
  • Does `last *:update` say something useful? Maybe you can share a library name, unless it's your private library. – lpiepiora Jul 08 '14 at 17:58

1 Answers1

7

Under target/resolution-cache/reports/ are Ivy's resolution report for each configuration. Look for *-compile.xml and *-test.xml and see if you have

<module organisation="org.scalaz" name="scalaz-core_2.10">
   ....
</module>

This should tell you the caller of the module.

Eugene Yokota
  • 94,654
  • 45
  • 215
  • 319