Grails 2.2.0升级导致协议缓冲区不匹配

时间:2013-02-19 19:01:01

标签: grails protocol-buffers grails-2.2

我们正在使用groovy 2和jdk 1.7将grails 2.0.3应用程序升级到grails 2.2.0。但是,我们发现grails 2.2.0附带protobuf-java 2.4.1,导致与我们的应用程序用于与后端通信的jar不匹配。该系统使用protobuf-java 2.3.0。因此,与该系统的任何通信都会失败。

我们尝试使用BuildConfig.groovy中的excludes标签排除protobuf-java,如此 -

inherits("global") { excludes 'protobuf-java' }

我们认为这只会排除我们从grails获得的2.4.1版本。但是,这似乎排除了这个jar的所有版本,甚至是我们使用的jar作为传递依赖的版本。如果我们尝试使用excludes标记,然后将protobuf-java作为依赖项包含在我们的pom中,版本为2.3.0,则应用程序重启会因grails错误而失败。

我的问题:

  1. 有没有办法可以只排除特定版本的 protobuf-java jar(即2.4.1)使用排除jar

  2. 排除grails的继承依赖项之一(protobuf 在我们的例子中使用java 2.4.1并使用降级版本建议

  3. 如果排除不是一种选择,还有其他更好的解决方法吗

1 个答案:

答案 0 :(得分:0)

我们在Grails 2.0.3和一个提取protobuf-java 3.4.0的库中遇到了类似的问题。我们通过运行战争而不是' grails run-app'来解决这个问题:

$ grails -Dgrails.env=dev war && java -jar target/com.acme.app-2.3.0.war

无论如何,课程重新加载功能都不适合这个项目。