Gradle 传递依赖排除未按预期工作.(我如何摆脱 com.google.guava:guava-jdk5:13.0 ?)

这是我的 build.gradle 的片段:

here is a snippet of my build.gradle:

compile 'com.google.api-client:google-api-client:1.19.0'
compile 'com.google.apis:google-api-services-oauth2:v2-rev77-1.19.0'
compile 'com.google.apis:google-api-services-plus:v1-rev155-1.19.0'
compile 'com.google.appengine.tools:appengine-gcs-client:0.4.1'
compile 'com.google.appengine.tools:appengine-mapreduce:0.8'

它导入多个版本的番石榴,如您在dependencyInsight中看到的那样:

which imports multiple version of guava as you can see with dependencyInsight:

com.google.guava:guava:15.0 (conflict resolution)

com.google.guava:guava:14.0.1 -> 15.0
+--- com.googlecode.objectify:objectify:4.1.3
|    --- default
--- net.eusashead.spring:spring-cache-gae:1.0.0.RELEASE
     --- default

com.google.guava:guava:[15.0,15.99] -> 15.0
+--- com.google.appengine.tools:appengine-gcs-client:0.4.1
|    +--- default
|    +--- com.google.appengine.tools:appengine-mapreduce:0.8
|    |    --- default
|    --- com.google.appengine.tools:appengine-pipeline:0.2.10
|         --- com.google.appengine.tools:appengine-mapreduce:0.8 (*)
+--- com.google.appengine.tools:appengine-mapreduce:0.8 (*)
--- com.google.appengine.tools:appengine-pipeline:0.2.10 (*)

com.google.guava:guava-jdk5:13.0
--- com.google.api-client:google-api-client:1.19.0
     +--- default
     +--- com.google.apis:google-api-services-oauth2:v2-rev77-1.19.0
     |    --- default
     +--- com.google.apis:google-api-services-plus:v1-rev155-1.19.0
     |    --- default
     +--- com.google.appengine.tools:appengine-gcs-client:0.4.1
     |    +--- default
     |    +--- com.google.appengine.tools:appengine-mapreduce:0.8
     |    |    --- default
     |    --- com.google.appengine.tools:appengine-pipeline:0.2.10
     |         --- com.google.appengine.tools:appengine-mapreduce:0.8 (*)
     +--- com.google.api-client:google-api-client-appengine:1.17.0-rc
     |    --- com.google.appengine.tools:appengine-gcs-client:0.4.1 (*)
     +--- com.google.apis:google-api-services-storage:v1-rev1-1.18.0-rc
     |    --- com.google.appengine.tools:appengine-gcs-client:0.4.1 (*)
     +--- com.google.apis:google-api-services-bigquery:v2-rev154-1.19.0
     |    --- com.google.appengine.tools:appengine-mapreduce:0.8 (*)
     --- com.google.api-client:google-api-client-servlet:1.17.0-rc
          --- com.google.api-client:google-api-client-appengine:1.17.0-rc (*)

(*) - dependencies omitted (listed previously)

我已尝试通过以下方式删除对 : 的依赖:

I have tried removing the dependency to : by doing:

compile ('com.google.api-client:google-api-client:1.19.0'){
        exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
compile ('com.google.api-client:google-api-client:1.19.0'){
        exclude group: 'com.google.guava', 
    }

但dependencyInsight 保持不变.我也试过了

but the dependencyInsight remains the same. I also tried

compile ('com.google.guava:guava:15.0'){force = true}

但依赖性洞察力仍然保持不变.如何摆脱 com.google.guava:guava-jdk5:13.0 ?

but again dependency insight remains the same. How do I get rid of com.google.guava:guava-jdk5:13.0 ?

详情:我在 Windows 8.1 机器上尝试过 gradle 1.2 和 2.1

Details: I've tried gradle 1.2 and 2.1 on a windows 8.1 box

我尝试这个的原因是为了摆脱这个异常:

The reason for me to try this is to get rid of this exception:

java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createStarted()Lcom/google/common/base/Stopwatch;

推荐答案

原来guava-jdk5还在维护中.

It turns out that guava-jdk5 is still being maintained.

所以我改变了这个:

compile ('com.google.guava:guava:15.0'){force = true}

为此:

compile('com.google.guava:guava-jdk5:17.0') { force = true }

这解决了我的问题,我现在可以使用 Google App Engine 项目中com.google.common"包中的类以及所有描述的依赖项

And that fixed my issues, I can now use classes from the 'com.google.common' package in Google App Engine project with all the described dependencies

相关文章