gpt4 book ai didi

java - 从 grails BuildConfig 中排除 Maven 依赖项

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:26 25 4
gpt4 key购买 nike

我正在使用 grails 2.5,并在我的项目中使用 grails spring websockets,一切正常。现在,由于我想实现使用 Google 登录,因此将 Maven 依赖项添加到了 Google api 客户端的 BuildConfig 中:

compile 'com.google.api-client:google-api-client:1.20.0'

现在,当我运行应用程序时,我收到此错误

java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()

这是因为 spring websocket 插件和 google api 客户端使用的 Jackson 库之间存在冲突。正如我所看到的,看起来 google 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" }

提醒一下,google api 客户端依赖项位于 BuildConfig 中的“依赖项”组下,该组使用 mavenCentral() 来获取依赖项,而不是在“插件”下。

有人知道我该如何解决这个问题吗?

谢谢

编辑:可能不理想,但我只需添加最新的 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 允许排除 Google 声明的 Jackson 版本,那么 Google 库甚至无法工作。 (如果插件在编译时需要某个库的不同版本,也会出现同样的问题。)

您可以尝试使用您首选的 Jackson 版本制作自己的 Google jar 版本。如果它不依赖于旧版本 Jackson 的方法,那是可行的。

关于java - 从 grails BuildConfig 中排除 Maven 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com