Gradle: переопределение зависимости с другим именем

Я пытаюсь импортировать 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 должен отлично работайте, так как они подойдут к новейшим). Насколько я могу судить, зависимостей Akka не существует на Maven Central, поэтому мы сломали пакеты.

Я хотел бы переопределить зависимости org.scalatra: scalatra-atmosphere: 2.2.0-RC3 вручную, заменив пакеты, не поддерживающие 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

Есть ли законный способ обойти эту проблему?

3
nl ja 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
добавлено