Protobuf编组程序在使用Gradle时未注册



我有一个项目,我试图让protobuf与infinispan、quarkus和gradle一起工作。问题是,尽管我遵循Quarkus主页中给出的说明:https://quarkus.io/guides/infinispan-client,当我使用gradle时,整理器似乎没有按照应有的方式生成和注册。对我来说,这似乎归结为当gradle是构建工具时org.infinispan.protostream:protostream-processor没有执行。这是一个有意识的决定,只支持Maven,还是我在渐变设置中遗漏了一些明显的东西?

最简单案例的复制可以在这里找到:https://github.com/radiosphere/gradle-java-protobuf对于gradle和maven:https://github.com/radiosphere/mvn-java-protobuf.这些项目都是非常基本的,基本上是试图在启动时运行一个简单的代码:

public void onStartup(@Observes StartupEvent startupEvent) {
RemoteCache<String, CounterState> cache = cacheManager.administration().getOrCreateCache("default", DefaultTemplate.DIST_SYNC);
cache.put("a", new CounterState(2L));
CounterState state = cache.get("a");
logger.infof("State: %s", state);
}

在maven项目中,这是可行的,在gradle项目中,抛出一个异常,说找不到marshaller。除了构建工具的选择之外,项目应该是相同的。

注释处理器在Maven构建中运行,因为io.quarkus:quarkus-infinispan-clientorg.infinispan.protostream:protostream-processorcompile依赖关系。

看起来Gradle决定不使用编译类路径中的注释处理器:

由于实现细节对注释处理器很重要,因此它们必须在注释处理器路径上单独声明。Gradle忽略编译类路径上的注释处理器。

这意味着您必须添加一个显式的annotationProcessor依赖项:

annotationProcessor 'org.infinispan.protostream:protostream-processor:4.4.0.Final'

最新更新