如何在Quarkus中为Gradle的外部模块中的类创建Jandex索引

时间:2019-06-26 23:06:18

标签: maven-plugin gradle-plugin multi-module quarkus

基于来自this SO question, answered for Maven builds的以下Maven配置,我需要等价的代码来进行Gradle设置。环顾四周,我找不到适用于Gradle的设置。

另一个问题的提要:本质上,外部项目的类没有索引,因此Quarkus可以使用它们。下面的解决方案重建索引并允许访问类。

其他问题的代码:

<build>
  <plugins>
    <plugin>
      <groupId>org.jboss.jandex</groupId>
      <artifactId>jandex-maven-plugin</artifactId>
      <version>1.0.6</version>
      <executions>
        <execution>
          <id>make-index</id>
          <goals>
            <goal>jandex</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

也...经过进一步的挖掘,看来作品here (github merge request中已经有修复程序。在撰写本文时,它已合并,但看起来好像不是发行版的一部分。如果这种情况有所改变,并且可以解决问题,将进行跟进。

更新:

随着0.18.0的发布,我仍然遇到问题,但是我相信我离问题越来越近了。我仍然收到以下(非常相似)错误:

2019-06-27 19:45:52,741 INFO  [io.qua.dep.QuarkusAugmentor] (main) Beginning quarkus augmentation
2019-06-27 19:45:53,241 WARN  [io.qua.dep.ste.ReflectiveHierarchyStep] (build-8) Unable to properly register the hierarchy of the following classes for reflection as they are not in the Jandex index:
- com.ebp.reasonadle.shared.pojos.user.User
Consider adding them to the index either by creating a Jandex index for your dependency via the Maven plugin, an empty META-INF/beans.xml or quarkus.index-dependency properties.");.

这是一个空的beans.xml,目前我不确定如何在application.properties中尝试输入。

在其他问题中建议的条目:

quarkus.index-dependency.<name>.group-id=
quarkus.index-dependency.<name>.artifact-id=
quarkus.index-dependency.<name>.classifier=(this one is optional)

我对占位符<name>应该是什么感到困惑。班级名称? Gradle项目名称?我还认为空作业是故意的吗?

我的整个gradle项目的结构:

| Main
| \ (API folder)
|  | User API (Quarkus Project, pulls in pojos)
| \ (Common resource folder)
|  | Common pojo's (Java library, done with Gradle's plugin)

对于Quarkus开发人员来说,我认为这不是必须的。在项目之间共享pojo很普遍,我称之为良好的设计。也许是为了说明如何进行这项工作而快速入门?

1 个答案:

答案 0 :(得分:0)

此问题最终由https://github.com/quarkusio/quarkus/issues/6635

解决

1.5.0复发了,但是很快就解决了。

对我来说,似乎META-INF文件夹中不需要其他任何内容,也不需要其他子模块的手动/显式索引。