Gradle:異なる名前による依存関係のオーバーライド

org.scalatra:scalatra-atmosphereをインポートしようとしています。 :2.2.0-RC3 をScala 2.10プロジェクトに追加します。問題は、このパッケージは、スカラでない2つのパッケージ com.typesafe.akka:akka-actor:2.0.4 com.typesafe.akka:akka-testkit: 2.0.4 org.scala-lang:scala-library:2.9.2 および org.scalatra:scalatra-json:2.2.0-RC3 彼らが最新に行くので、うまく動作します)。私が知る限り、Akkaの依存関係はMaven Centralには存在しないので、パッケージが壊れています。

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

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

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

3
nl ru de

1 答え

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

I think your options are variations on excluding the specific dependency and adding it back in by hand. Examples can be found in the docs

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' 
}
4
追加された