Тестирование micronaut в родной среде выполнения graalJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тестирование micronaut в родной среде выполнения graal

Сообщение Anonymous »

У меня есть базовое CRUD-приложение micronaut, которое управляет контактами через Rest API. При локальном запуске приложения с использованием graalvm-ce 21.0.2 API возвращает ожидаемый ответ контакта.
Когда я упаковываю приложение с использованием собственной упаковки (docker-native или own-image), используя:

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

mvn clean compile package -Dpackaging=native-image
мое приложение не возвращает сущность Contact со всеми свойствами
Вот как выглядит POJO ContactResponse:

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

@Builder
public record ContactResponse(
String id,
String name,
String address,
String phoneNumber,
String email,

@JsonFormat(pattern = ObjectMapperConfig.API_DATE_TIME_PATTERN)
LocalDateTime createdAt
)
И вызов API (после упаковки) возвращает результат:

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

{
"createdAt": "2025-10-14T12:35:41"
}
Добавление @JsonProperty() в поле приводит к его появлению в ответе. Проведя некоторое исследование, я обнаружил, что во время сборки собственного исполняемого файла компилятор graalvm удаляет все элементы, которые «не нужны», включая рефлексивный доступ, по соображениям производительности.
Поскольку я использую привязку данных Джексона в своем проекте, который основан на Java Reflection, я заставил его работать, добавив @ReflectiveAccess, чтобы заставить компилятор генерировать метаданные отражения для этого конкретного объекта. (ContactResponse)
Мне хотелось бы знать, есть ли способ воспроизвести эту проблему в процессе разработки (а не во время упаковки), чтобы мои тесты завершались неудачно до того, как я упаковываю и развертываю. Мои тесты проводятся до того, как я упаковываю приложение в собственный исполняемый файл и поэтому не могу обнаружить это заранее.

Подробнее здесь: https://stackoverflow.com/questions/797 ... nvironment
Ответить

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

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

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

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

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