Я обновился до 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
Решение — перенести конфигурацию плагина 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 цель из главной папки проекта.
Кстати, сообщение об ошибке не совпадает с проблемой, на которую вы мне указали. У меня нет основного класса, поэтому я нигде не использую @QuarkusMain или QuarkusApplication.
Только что попробовал прямо сейчас с 2.14.1.Final, но все та же проблема. Я думаю, что вместо ошибки или чего-то еще, это может быть проблема с конфигурацией?
@EduardoYáñezParareda, у вас есть проект, которым вы могли бы поделиться, чтобы воспроизвести проблему? Спасибо!
Я добавил шаги для воспроизведения проблемы в основном вопросе.
Спасибо за подробности @EduardoYáñezParareda. Причина, по которой это не удается, заключается в том, что у вас есть quarkus-maven-plugin с build и другими целями, настроенными для модуля с упаковкой pom. Если вы удалите плагин или его конфигурацию выполнения из родительского POM, он будет работать.
Я открыл PR, чтобы пропустить выполнение цели разработки для модулей с упаковкой pomgithub.com/quarkusio/quarkus/pull/29420. Спасибо, что сообщили о проблеме!
Ну, на самом деле у меня ничего не было настроено о quarkus-maven-plugin в модуле, но у меня сработало добавление в pom.xml модуля плагина с целью dev, а остальное оставить как было в родительском модуле.
Я добавил в вопрос ссылку на созданный мной проект, который воспроизводит проблему.
Я не вижу, чтобы добавление конфигурации плагина, о которой вы упомянули, в инфраструктурный веб-модуль решило проблему. Это также зависит от того, в каком каталоге запущен mvn quarkus:dev. Если он запущен из корневого каталога проекта, первым обрабатываемым модулем будет core-with-quarkus. Учитывая, что у него настроен плагин quarkus-maven-plugin, он не работает на quarkus:dev, то, что настроено в infrastructure-web, не имеет значения. Однако запуск quarkus:dev из infrastructure-web будет работать, потому что он наследует правильный quarkus-maven-plugin от родителя. Теперь вот что бы порекомендовали...
Переместите 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. Надеюсь, это поможет.
В проекте, который я загрузил на GitHub, я не добавил плагин в конфиг модуля, чтобы показать, что его нельзя запустить с помощью quarkus dev
Алексей, спасибо, все заработало. Я отредактировал ваш ответ с полным объяснением.
Я получаю ту же ошибку с 2.13.4.Final