Почему родной исполняемый файл Quarkus не запускает мои ресурсы Jax-rs с многомодульной структурой maven?

#java #quarkus

#java #quarkus

Вопрос:

Я пытаюсь разработать приложение quarkus с шестиугольной архитектурой.

Код приложения доступен на github.

У меня есть 4 модуля; Business, Persistence, Webservice и приложение упакованы в глобальный модуль, где я буду создавать свое приложение Quarkus.

Когда я запускаю:

 mvn clean package -Pnative 
  

а затем мой собственный образ

 portfolio-app/target/portfolio-app-1.0-SNAPSHOT-runner
  

Quarkus не может предоставить мою конечную точку Portfolio, которой нет в основном модуле.

Я мог бы поместить свою конечную точку в свое портфолио-приложение, и это сработает, но я не хочу нарушать шестиугольную архитектуру.

Должен ли я поместить все мои функции Quarkus в один модуль maven или можно разделить функции в нескольких пакетах?

Комментарии:

1. Мне это кажется ошибкой, не хотели бы вы открыть проблему, пожалуйста?

2. Спасибо @ geoand я создал проблему github.com/quarkusio/quarkus/issues/1728

3. @geoand Я не уверен, что это точно такая же проблема, но когда я пытаюсь внедрить bean в мое основное приложение quarkus (реализация, исходящая из другого модуля maven). Я получаю сообщение об ошибке при обработке построения собственного образа. Arc не находит реализацию по умолчанию.

4. Я почти уверен, что это та же проблема. Похоже, что процесс индексации зависимостей вообще не происходит, и поэтому ничего не работает так, как ожидалось

Ответ №1:

Мне удается исправить проблему, добавив плагин jandex maven в мой родительский pom, следуя совету @gsmet

  <build>
    <plugins>
    <plugin>
        <groupId>org.jboss.jandex</groupId>
        <artifactId>jandex-maven-plugin</artifactId>
        <version>1.0.5</version>
        <executions>
            <execution>
                <id>make-index</id>
                <goals>
                    <goal>jandex</goal>
                </goals>
                <!-- phase is 'process-classes by default' -->
                <configuration>
                    <!-- Nothing needed here for simple cases -->
                </configuration>
            </execution>
        </executions>
    </plugin>
    </plugins>
</build>
  

Плагин сгенерирует файл, который называется jandex.idx, содержащий ссылки на все файлы .class, содержащиеся в папке target / classes.

 └── target
├── classes
│   ├── META-INF
│   │   └── jandex.idx <==== here
│   └── org
│       └── acme
│           └── quarkus
│               └── portfolio
│                   └── persistence
│                       └── repository
│                           ├── SqlRepositoryAdapter.class
│                           └── SqlRepositoryProvider.class