Quarkus Arc блокирует многомодульную сборку в случае неустановленных свойств в сборке модуляJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Quarkus Arc блокирует многомодульную сборку в случае неустановленных свойств в сборке модуля

Сообщение Anonymous »

У меня есть многомодульный проект Quarkus (с Gradle) со следующими проектами:
  • Core
  • Module1
  • Service1
Module1 содержит класс @ApplicationScope, который определяет следующую переменную:

Код: Выделить всё

@Inject
@DataSource("database1")
AgroalDataSource dataSource;
Когда я теперь запускаю сборку Gradle со следующей командой (исключая тесты)...

Код: Выделить всё

gradle clean build -x test
Я получаю следующую ошибку:

Код: Выделить всё

Unsatisfied dependency for type io.agroal.api.AgroalDataSource and qualifiers [@Default]
Причина ошибки заключается в том, что Module1 не содержит файла application.properties, который определяет источник данных. Но он также не должен содержать этого, поскольку Service1 — это приложение Quarkus, где application.properties должен определять «Конфигурацию времени выполнения» для себя и для всех модулей (Core, Module1), которые он использует.
Похоже, что Quarkus Arc уже должен иметь возможность разрешать конфигурации во время сборки, а не во время выполнения, чтобы компилировать их непосредственно в код, что противоречит тому факту, что модули часто являются только «пригодными для жизни». вместе со службами, в которых они выполняются.

Используется:
  • Gradle 8.6
  • Quarkus 3.9.5
  • Intellij 2024.1.1
Требование: модульные тесты с QuarkusTest
  • Модули содержат модульные тесты QuarkusTest, поскольку модули должны содержать фрагменты Приложение-служба (монорепо с модульностью), а также необходимо иметь возможность использовать Quarkus Arc для внедрения зависимостей и событий запуска Quarkus (среди прочего), а также иметь возможность использовать эти инъекции зависимостей во время тестов. мы не можем использовать обычные тесты Junit5, но нам нужно использовать тесты QuarkusTest.

    поскольку нам нужно использовать QuarkusTest, мы хотим, чтобы Intellij также мог запускать эти тесты через пользовательский интерфейс. . При запуске QuarkusTest через пользовательский интерфейс в Intellij для его правильного запуска Intellij необходимы следующие два параметра Gradle.

    зависимости должны содержать: /code>
  • Плагины должны содержать: id 'io.quarkus'



Итак, в заключение:
  • В настоящее время модули должны быть Quarkus-Modules (имеющими Quarkus-plugin и Quarkus-Bom), поскольку в противном случае тесты не будут выполняться в Intellij.
  • Модули используют Quarkus-Arc, и Quarkus-Arc необходимо снабдить Inject-Targets во время! сборку, в противном случае она будет жаловаться/прерывать сборку.
Для модульных тестов (или запуска модульных тестов) во время сборки) я могу просто написать класс TestProfile, который заменяет файл application.properties и кажется хорошим.
Для самой сборки я не могу этого сделать, поскольку класс TestProfile предназначен только для модульных тестов. Поэтому я должен использовать файл application.properties, предоставляющий значения по умолчанию.

Наконец, теперь мой вопрос:
< ul>
[*]Есть ли что-то, что я пропустил в документации Quarkus Arc в отношении такой многомодульной установки?
[*]Может ли кто-нибудь указать мне, как я мог бы выполнить рефакторинг мой проект, чтобы сделать модули более независимыми и автономными.
[*]Нужно ли мне также поместить файл application.properties в мои модули, чтобы я мог создавать их с помощью Quarkus Дуга в виду? Хотя кажется, что это работает, это кажется неправильным, потому что тогда мне нужно будет предоставить неправильные свойства/свойства-заполнители только для того, чтобы удовлетворить Arc Build.


Подробнее здесь: https://stackoverflow.com/questions/785 ... odule-buil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»