Не удалось запустить Quarkus в режиме разработки для многомодульного проекта: DevModeContext.getApplicationRoot() имеет значение null

Я обновился до 2.14.1 Final, первая версия вопроса была с 2.13.3 Final, также пробовал с 2.13.4.Final

Последнее обновление: Я на Quarkus 2.14.1 Финальная версия.

Я перевел свой проект на многомодульную структуру, и теперь я не могу запустить quarkus в режиме разработки. Я могу нормально собрать проект, но когда я запускаю quarkus dev, я получаю эту ошибку:

[INFO] --- quarkus-maven-plugin:2.14.1.Final:dev (default-cli) @ my-project ---
Listening for transport dt_socket at address: 5005
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "io.quarkus.deployment.dev.DevModeContext$ModuleInfo.getMain()" because the return value of "io.quarkus.deployment.dev.DevModeContext.getApplicationRoot()" is null
at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:90)
at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62)

Нужно ли мне сообщать Quarkus, где сейчас конечные точки, или что-то еще?

Как это воспроизвести (думаю, версия Java не важна):

1 - Выполнить:

quarkus create app --maven --java=19.0.1 --wrapper --package-name=com.myproject

Это создает проект code-with-quarkus.

2 - Затем добавьте в проект новый модуль, например, ìnfrastructure-web.

3 - Переместите исходный код, сгенерированный на первом шаге, в модуль. Это означает перемещение com.myproject.GreetingResource в папку нового модуля src/main/java.

4 - Выполнить:

mvn clean install && quarkus dev

5 - Вы получаете ту же ошибку, что и я.

Вот проект с этой проблемой: https://github.com/eyp/quarkus-dev-start-issue

LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Сортировка hashmap по значениям
Сортировка hashmap по значениям
На Leetcode я решал задачу с хэшмапой и подумал, что мне нужно отсортировать хэшмапу по значениям.
0
0
157
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение — перенести конфигурацию плагина Maven quarkus-maven-plugin в раздел pluginManagement родительского pom.xml.

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>quarkus-maven-plugin</artifactId>
                <version>${quarkus.platform.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

После этого добавьте в модуль только подключаемый модуль, в данном случае модуль, содержащий конечные точки (класс ресурсов).

<build>
    <plugins>
        <plugin>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Таким образом можно будет запустить quarkus dev цель из главной папки проекта.

Я получаю ту же ошибку с 2.13.4.Final

Eduardo Yáñez Parareda 21.11.2022 13:02

Кстати, сообщение об ошибке не совпадает с проблемой, на которую вы мне указали. У меня нет основного класса, поэтому я нигде не использую @QuarkusMain или QuarkusApplication.

Eduardo Yáñez Parareda 21.11.2022 13:07

Только что попробовал прямо сейчас с 2.14.1.Final, но все та же проблема. Я думаю, что вместо ошибки или чего-то еще, это может быть проблема с конфигурацией?

Eduardo Yáñez Parareda 21.11.2022 21:14

@EduardoYáñezParareda, у вас есть проект, которым вы могли бы поделиться, чтобы воспроизвести проблему? Спасибо!

Alexey Loubyansky 22.11.2022 14:27

Я добавил шаги для воспроизведения проблемы в основном вопросе.

Eduardo Yáñez Parareda 22.11.2022 16:43

Спасибо за подробности @EduardoYáñezParareda. Причина, по которой это не удается, заключается в том, что у вас есть quarkus-maven-plugin с build и другими целями, настроенными для модуля с упаковкой pom. Если вы удалите плагин или его конфигурацию выполнения из родительского POM, он будет работать.

Alexey Loubyansky 22.11.2022 21:53

Я открыл PR, чтобы пропустить выполнение цели разработки для модулей с упаковкой pomgithub.com/quarkusio/quarkus/pull/29420. Спасибо, что сообщили о проблеме!

Alexey Loubyansky 22.11.2022 21:56

Ну, на самом деле у меня ничего не было настроено о quarkus-maven-plugin в модуле, но у меня сработало добавление в pom.xml модуля плагина с целью dev, а остальное оставить как было в родительском модуле.

Eduardo Yáñez Parareda 22.11.2022 23:23

Я добавил в вопрос ссылку на созданный мной проект, который воспроизводит проблему.

Eduardo Yáñez Parareda 24.11.2022 12:45

Я не вижу, чтобы добавление конфигурации плагина, о которой вы упомянули, в инфраструктурный веб-модуль решило проблему. Это также зависит от того, в каком каталоге запущен mvn quarkus:dev. Если он запущен из корневого каталога проекта, первым обрабатываемым модулем будет core-with-quarkus. Учитывая, что у него настроен плагин quarkus-maven-plugin, он не работает на quarkus:dev, то, что настроено в infrastructure-web, не имеет значения. Однако запуск quarkus:dev из infrastructure-web будет работать, потому что он наследует правильный quarkus-maven-plugin от родителя. Теперь вот что бы порекомендовали...

Alexey Loubyansky 24.11.2022 23:29

Переместите quarkus-maven-plugin в родительском POM из build/plugins под build/pluginManagement/plugins. В infrastucture-web добавьте + <build> + <plugins> + <plugin> + <groupId>${quarkus.platform.group-id}</groupId> + <artifactId>quarkus-maven-plugin</artifactId> + </ plugin> + </plugins> + </build> Теперь вы сможете запускать quarkus:dev как из рута, так и из infrastructure-web. Надеюсь, это поможет.

Alexey Loubyansky 24.11.2022 23:30

В проекте, который я загрузил на GitHub, я не добавил плагин в конфиг модуля, чтобы показать, что его нельзя запустить с помощью quarkus dev

Eduardo Yáñez Parareda 25.11.2022 08:09

Алексей, спасибо, все заработало. Я отредактировал ваш ответ с полным объяснением.

Eduardo Yáñez Parareda 25.11.2022 08:36

Другие вопросы по теме