Gradle:用不同的名称覆盖依赖项

Gradle:用不同的名称覆盖依赖项,gradle,dependency-management,Gradle,Dependency Management,我正在尝试导入Scala 2.10项目。问题是,这个包依赖于两个非Scala版本的包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 2.10项目。问题是,这个包依赖于两个非Scala版本的包
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上不存在,因此我们破坏了包

我想手动覆盖
org.scalatra:scalatra大气:2.2.0-RC3
,用实际存在的Scala版本包替换非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

是否有合法的方法来解决此问题?

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' 
}