1

我们正在使用 groovy 2 和 jdk 1.7升级我们的grails 2.0.3应用程序。grails 2.2.0但是,我们发现它grails 2.2.0protobuf-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. 有没有一种方法可以使用排除 jar 仅排除特定版本的 protobuf-java jar(即 2.4.1)

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

如果排除不是一种选择,有没有其他更好的方法来解决这个问题

4

1 回答 1

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

无论如何,类重新加载功能不适用于此项目。

于 2017-09-07T11:27:58.180 回答