Why do I get inconsistent cross-version in sbt in one environment, but not in another?

I have an sbt project with these dependencies:

libraryDependencies ++= Seq( "org.scalatra" %% "scalatra" % ScalatraVersion, "org.scalatra" %% "scalatra-scalate" % ScalatraVersion, "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test", "ch.qos.logback" % "logback-classic" % "1.1.2" % "runtime", "org.eclipse.jetty" % "jetty-webapp" % "9.1.5.v20140505" % "container", "org.eclipse.jetty" % "jetty-plus" % "9.1.5.v20140505" % "container", "javax.servlet" % "javax.servlet-api" % "3.1.0", "org.sorm-framework" % "sorm" % "0.3.18", "com.h2database" % "h2" % "1.4.187", "org.fusesource.scalamd" % "scalamd_2.10" % "1.6" ) 

On one machine, I can run. / sbt no problem; on the other i get

 [error] Modules were resolved with conflicting cross-version suffixes in {file:/C:/dev/scalaspace/game-tracker/}game-tracker: [error] org.scala-lang.modules:scala-xml _2.11, _2.12.0-M1 [error] org.scala-lang.modules:scala-parser-combinators _2.11, _2.12.0-M1 

I have already highlighted the problem and fixed it. Sorm depends on the compiler 2.12.0-M1:

 [info] +-org.sorm-framework:sorm:0.3.18 [S] [info] +-com.github.nikita-volkov:embrace:0.1.4 [S] [info] | +-org.scala-lang:scala-compiler:2.12.0-M1 [S] [info] | +-org.scala-lang.modules:scala-parser-combinators_2.12.0-M1:1.0.4 [S] [info] | +-org.scala-lang.modules:scala-xml_2.12.0-M1:1.0.4 [S] [info] | +-org.scala-lang:scala-reflect:2.11.0 [S] (evicted by: 2.11.6) [info] | +-org.scala-lang:scala-reflect:2.11.6 [S] [info] | +-org.scala-lang:scala-reflect:2.12.0-M1 (evicted by: 2.11.0) 

I can create a project in both places by adding exclude("org.scala-lang","scala-compiler") to the sorm dependency. But why is the behavior inconsistent? Both environments use the same version of sbt (0.13.8) and scala (2.11.6). What else?

+6
source share
1 answer

Given the pom for com.github.nikita-volkov: hug , I assume this is due to the use of version ranges combined with caching:

 <dependency> <groupId>org.scala-lang</groupId>  <artifactId>scala-compiler</artifactId>  <version>[2.10,3)</version>  <scope>compile</scope> </dependency> 

Especially considering that Scala 2.12.0-M1 was released yesterday:


To eliminate the inconsistency you want to clear the ivy cache:

 rm -r ~/.ivy2/cache 

However, you also want to fix the scala-compiler usage version, and you want it to match the configured scalaVersion :

 dependencyOverrides += "org.scala-lang" % "scala-compiler" % scalaVersion.value 

For more information, see Overriding the Version in Library Management Documents.

+11
source

Source: https://habr.com/ru/post/986695/


All Articles