我正在尝试将org.scalatra:scalatra-atmosphere:2.2.0-RC3
导入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
应该可以正常工作,因为它们会发布到最新版本) 。据我所知,Maven Central上不存在Akka依赖项,因此我们破坏了包。
我想通过用实际存在的Scala版本的软件包替换非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
是否有合法的方法解决此问题?
答案 0 :(得分:4)
1.4中仅支持版本更改,1.5由于包含对更改依赖项的其他属性的支持。
我认为你的选择是排除特定依赖关系并手动添加它的变体。可以在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'
}