6

これらの依存関係を持つ 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"
)

1 台のマシンでは、問題なく ./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)

exclude("org.scala-lang","scala-compiler")sorm 依存関係を追加することで、両方の場所でプロジェクトをビルドできます。しかし、なぜ行動に一貫性がないのでしょうか。どちらの環境も同じバージョンの sbt (0.13.8) と scala (2.11.6) を使用しています。何が違うの?

4

1 に答える 1

12

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 が昨日リリースされたことを考えると:


Ivy キャッシュをクリアする不整合を修正するには、次のようにします。

rm -r ~/.ivy2/cache

ただし、 use のバージョンも修正し、scala-compiler構成済みのバージョンと一致させたいscalaVersion:

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

詳細については、ライブラリ管理ドキュメントのバージョンのオーバーライドセクションを参照してください。

于 2015-05-06T22:25:28.423 に答える