Свойство конфигурации с учетом профиля Quarkus, выбранное другим профилемJAVA

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

Сообщение Anonymous »

При использовании Quarkus 3.29.0 моя сборка Maven, похоже, жестко запрограммировала свойство, специфичное для профиля, которое подбирается другим профилем, если оно не переопределено явно. В результате сборки создается быстрый jar-файл, работающий в режиме JVM. В моем проекте есть три файла конфигурации приложения в папке src/main/resources:

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

application.properties
application-dev.properties
application-prod.properties
В application-prod.properties я определил свойства, касающиеся совместного использования ресурсов между источниками (CORS). Другие файлы конфигурации не содержат никаких конфигураций, связанных с CORS:

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

quarkus.http.cors.enabled=true
quarkus.http.cors.origins=https://example.com
При создании приложения без определенного профиля и запуске его с профилем разработчика я получаю неожиданное поведение CORS:

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

mvn clean verify
java -Dquarkus.profile=dev -jar target/quarkus-app/quarkus-run.jar
curl -v -X OPTIONS http://127.0.0.1:8080 -H "Origin: https://example.org"
--> HTTP/1.1 403 CORS Rejected - Invalid origin
Только при явной сборке с использованием профиля разработчика я получаю ожидаемое поведение:

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

mvn clean verify -Dquarkus.profile=dev
java -Dquarkus.profile=dev -jar target/quarkus-app/quarkus-run.jar
curl -v -X OPTIONS http://127.0.0.1:8080 -H "Origin: https://example.org"
--> HTTP/1.1 200 OK
Я могу решить эту проблему, явно указав следующее в application-dev.properties:

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

quarkus.http.cors.enabled=false
Однако мне хотелось бы понять такое поведение, поскольку оно противоречит документации:

Если профиль не определяет значение для определенного атрибута, используется значение по умолчанию (без профиля):

Я предполагаю, что свойство quarkus.http.cors.enabled оценивается во время сборки, и что при сборке по умолчанию используется профиль prod. Однако после отслеживания эффективной конфигурации времени сборки в application.properties с помощью

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

quarkus.config-tracking.enabled=true
Мне не удалось найти в ./quarkus/quarkus-prod-config-dump никаких свойств, связанных с CORS, которые бы подтверждали использование в процессе сборки. Кроме того, я увидел предупреждение о том, что application-prod.properties вообще не использовался в процессе сборки:

[ПРЕДУПРЕЖДЕНИЕ] [io.quarkus.config] Файл профилированной конфигурации /application-prod.properties игнорируется; основной файл конфигурации application.properties должен существовать в том же месте, чтобы загрузить application-prod.properties


Подробнее здесь: https://stackoverflow.com/questions/798 ... nt-profile
Ответить

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

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

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

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

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