scala – 为什么我在一个环境中而不是另一个环境中的sbt中出现了
发布时间:2020-12-16 09:23:08 所属栏目:安全 来源:网络整理
导读:我有一个带有这些依赖项的sbt项目: libraryDependencies ++= Seq( "org.scalatra" %% "scalatra" % ScalatraVersion,"org.scalatra" %% "scalatra-scalate" % ScalatraVersion,"org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test","ch.qos.log
我有一个带有这些依赖项的sbt项目:
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" ) 在一台机器上,我可以毫无问题地运行./sbt;另一方面,我明白了 [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 我已经隔离了问题和解决方案. Sorm取决于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) 我可以通过在sorm依赖项中添加exclude(“org.scala-lang”,“scala-compiler”)来在两个位置构建项目.但为什么行为不一致?两种环境都使用相同版本的sbt(0.13.8)和scala(2.11.6).有什么不同? 解决方法
鉴于
com.github.nikita-volkov:embrace的pom,我猜这是由于版本范围与缓存的结合使用:
<dependency> ? <groupId>org.scala-lang</groupId> ??<artifactId>scala-compiler</artifactId> ??<version>[2.10,3)</version> ??<scope>compile</scope> </dependency> 特别是考虑到Scala 2.12.0-M1昨天发布: > http://www.scala-lang.org/news/2.12.0-M1 要修复您想要清除常春藤缓存的不一致性: rm -r ~/.ivy2/cache 但是,您还想修复scala-compiler使用的版本,并且希望它与您配置的scalaVersion匹配: dependencyOverrides += "org.scala-lang" % "scala-compiler" % scalaVersion.value 请参阅“图书馆管理”文档的Overriding a version部分中的更多详细信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |