服务加载器在使用 gradle 时找不到提供者,但可以与 maven 一起工作

问题描述 投票:0回答:1

我在这里创建了一个存储库https://github.com/bigbang4u2/query-dsl-hibernate-types(这是从here复制的)。

我创建的存储库here同时包含gradle和maven。使用 Maven 时,所有提供程序都在服务加载器中正确加载(请参阅 querydsl-ext-apt,其中提供程序存在并且也在 META-INF/services 中列出)。出于某种原因不知道为什么 Maven 能够生成所有带有 META-INF 中列出的扩展名的 querydsl QClass 但是当我使用 gradle 时所有这些都被忽略并且只生成 querydsl 原生的 QClasses

我需要使用 gradle,因为这就是我在我的项目中使用的

请帮忙

java maven gradle querydsl
1个回答
0
投票

因为 Maven 将不应该放在一起的东西放在一起,而 Gradle 将这些东西适当地分开了。 使用您定义的服务的类作为注释处理的一部分运行。 因此,您的服务不需要作为

implementation
依赖项,而是作为
annotationProcessor
依赖项。

替换

implementation project(':querydsl-ext-apt')

by

annotationProcessor project(':querydsl-ext-apt')

在需要的地方找到您的服务。

© www.soinside.com 2019 - 2024. All rights reserved.