Java 从grails BuildConfig中排除maven依赖项

Java 从grails BuildConfig中排除maven依赖项,java,maven,grails,Java,Maven,Grails,我使用的是Grails2.5,在我的项目中使用的是GrailsSpringWebSocket,一切正常。现在,由于我想用Google实现登录,我在Google api客户端的BuildConfig中添加了maven依赖项: compile 'com.google.api-client:google-api-client:1.20.0' 现在,当我运行应用程序时,我得到了这个错误 java.lang.NoSuchMethodError: com.fasterxml.jackson.core.Js

我使用的是Grails2.5,在我的项目中使用的是GrailsSpringWebSocket,一切正常。现在,由于我想用Google实现登录,我在Google api客户端的BuildConfig中添加了maven依赖项:

compile 'com.google.api-client:google-api-client:1.20.0'
现在,当我运行应用程序时,我得到了这个错误

java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()
这是因为SpringWebSocket插件和GoogleAPI客户端使用的Jackson库之间存在冲突。 正如我所看到的,谷歌api似乎使用了过时的jackson版本。 可以排除从maven依赖项导入jackson吗?我知道从grails插件可以添加“排除”。但它似乎对maven依赖项不起作用,我添加了以下内容,但运气不佳:

compile 'com.google.api-client:google-api-client:1.20.0', { excludes "com.google.api-client:google-api-client-jackson2:1.20.0" }
提醒一下,GoogleAPI客户端依赖项位于BuildConfig中的“dependencies”组下,该组使用mavenCentral()获取依赖项,而不是“plugins”下

有人知道我该怎么解决这个问题吗

谢谢

编辑:可能不太理想,但我可以通过添加最新的jackson依赖项来解决这个问题

    compile 'com.google.api-client:google-api-client:1.20.0', {
        excludes "com.google.api-client:google-api-client-jackson2:1.20.0"
    }
    compile 'com.fasterxml.jackson.core:jackson-core:2.7.2'

我认为你想做的是不可能的。排除可以用于插件,因为源代码是在本地下载和编译的。对于依赖项,您使用的是maven,它正在下载JAR。您不能告诉maven排除jar的一部分

您想要使用的Google代码可能取决于它所依赖的Jackson版本的其他方法,这些方法在您想要使用的版本中不存在。在这种情况下,如果Maven允许排除谷歌公布的Jackson版本,谷歌图书馆甚至都不会工作。(如果插件在编译时需要某个库的不同版本,也会出现同样的问题。)


你可以试着用你喜欢的杰克逊版本制作你自己的谷歌jar版本。如果它不依赖于旧版本的Jackson的方法,那就可以了

我认为你想做的事是不可能的。排除可以用于插件,因为源代码是在本地下载和编译的。对于依赖项,您使用的是maven,它正在下载JAR。您不能告诉maven排除jar的一部分

您想要使用的Google代码可能取决于它所依赖的Jackson版本的其他方法,这些方法在您想要使用的版本中不存在。在这种情况下,如果Maven允许排除谷歌公布的Jackson版本,谷歌图书馆甚至都不会工作。(如果插件在编译时需要某个库的不同版本,也会出现同样的问题。)


你可以试着用你喜欢的杰克逊版本制作你自己的谷歌jar版本。如果它不依赖于旧版本的Jackson的方法,那就可以了

尝试
排除'google-api-client-jackson2'
而不是全名。它适用于简单的依赖关系,没有问题。依赖项必须在
dependencies{}
not
plugins{}
try
excludes'google-api-client-jackson2'下定义,而不是全名。它适用于简单的依赖关系,没有问题。依赖项必须在
dependencies{}
not
plugins{}