#java #jaxb
#java #jaxb
Вопрос:
У меня есть файл схемы xml, и из него сгенерированы классы. Во время разработки xsd может измениться. Как я могу убедиться, что xsd и сгенерированные классы синхронизированы?
Существует возможность генерировать классы во время сборки с помощью maven. Используя это или нет, я хотел бы быть уверенным в модульном тестировании.
Спасибо и приветствую Steff
Комментарии:
1. Вы могли бы попытаться создать xml из ваших сгенерированных классов и проверить сгенерированный xml на соответствие xsd в модульном тестировании.
2. Я собирался сказать «отражение», но я бы предпочел повторно генерировать ваши классы из схемы в качестве тестовой зависимости в процессе сборки — таким образом, вам не придется реорганизовывать свой модульный тест каждый раз, когда вносятся изменения. Итак, iow, тест восстанавливает классы
3. Привет, flash, это хорошая идея, спасибо.
Ответ №1:
При каких обстоятельствах они не могут быть синхронизированы? Хотя я могу представить себе написание простого плагина JAXB, который добавлял бы временную метку схемы к сгенерированным классам, чтобы вы могли сравнивать временные метки в модульном тестировании.
Однако я сомневаюсь во всем подходе. Компиляция схемы является частью процесса сборки, и она должна быть безупречной по дизайну. Вы не проверяете, что файлы Java «синхронизированы» со скомпилированными .class
файлами, не так ли? То же самое должно быть и в случае компиляции схемы.
Комментарии:
1. Спасибо за ответ. Нет, я не проверяю сами файлы .class, но я мог бы проверить, представляют ли источники схему. Дело в том, что пока продукт находится в стадии разработки, схема не безупречна. Что ж, стабильность со временем растет.
Ответ №2:
Вы принудительно выполняете генерацию при каждой сборке. Или в соответствии с a Profile
не выполнять его так много раз и увеличить время компиляции в разработке.
Здесь вы можете взглянуть на JAXB
плагин для генерации источников каждый раз.
Комментарии:
1. Рекомендуемый плагин здесь: java.net/projects/maven-jaxb2-plugin/pages/Home