3

org.scalatra:scalatra-atmosphere:2.2.0-RC3Scala 2.10 プロジェクトにインポートしようとしています。問題はcom.typesafe.akka:akka-actor:2.0.4、このパッケージが Scala でバージョン管理されていない 2 つのパッケージに依存していることです。私が知る限り、Maven Central には Akka の依存関係が存在しないため、パッケージが壊れています。com.typesafe.akka:akka-testkit:2.0.4org.scala-lang:scala-library:2.9.2org.scalatra:scalatra-json:2.2.0-RC3

org.scalatra:scalatra-atmosphere:2.2.0-RC3Scala でバージョン管理されていないパッケージを、実際に存在する Scala バージョン管理されたパッケージに置き換えることで、 の依存関係を手動でオーバーライドしたいと思います。

configurations.all {
    resolutionStrategy {
        eachDependency { details ->
            if (details.requested.group == 'com.typesafe.akka') {
                details.requested.name += "_$scalaVersion"
                details.useVersion '2.1.0'
            }
        }
    }
}

残念ながら、この手法は Gradle 1.4 の時点で明示的に禁止されているようです。

 What went wrong:
Could not resolve all dependencies for configuration ':compile'.
> new ModuleRevisionId MUST have the same ModuleId as original one. original = com.typesafe.akka#akka-actor new = com.typesafe.akka#akka-actor_2.10

この問題を回避する正当な方法はありますか?

4

1 に答える 1

4

1.4 ではバージョンの変更のみがサポートされています。1.5 には、依存関係の他の属性を変更するためのサポートが含まれている予定です。

あなたのオプションは、特定の依存関係を除外して手動で追加することのバリエーションだと思います。例はドキュメントにあります

dependencies {
    compile("org.scalatra:scalatra-atmosphere:2.2.0-RC3) {
        exclude group: 'com.typesafe.akka', module: 'akka-actor'
        exclude group: 'com.typesafe.akka', module: 'akka-testkit'
    }
    // assuming you have this available in a repository your build is configured to resolve against
    compile 'com.typesafe.akka:akka-actor:2.0.4-MY.LOCAL.VERSION' 
}
于 2013-01-29T09:17:24.610 に答える