Параметры плагина#
Расположение параметров в секции плагина описаны в разделах «Плагин для maven проектов» и «Плагин для gradle проектов».
Параметр maven плагина |
Параметр gradle плагина |
Описание |
|---|---|---|
|
|
Код компонента. Значение, которым заполняется атрибут |
|
- |
То же, что и |
|
|
Форматировать структуру генерируемого xml-файла (по умолчанию |
|
|
Строгая проверка типов (по умолчанию |
|
|
Параметр используется если |
|
|
Регистрация нового примитивного типа |
|
|
Завершать сборку с ошибкой при ошибках работы плагина (по умолчанию |
|
|
Путь расположения папки с моделью внутри сборочной директории. По умолчанию — корень результирующего jar-файла ( |
|
|
Расположение сборочной директории. По умолчанию указывает на сборочную директорию модуля ( |
|
|
Версия схемы файла модели. По умолчанию 1.0 |
|
|
Использование старой логики сканирования. Начиная с версии 5.6.0, для сканирования классов используется Hibernate ORM, что позволяет добавить в модель данные о физическом маппинге |
|
|
Параметр Hibernate ORM для возможности переопределения. По умолчанию используется |
|
|
Параметр Hibernate ORM для возможности переопределения, если в проекте используется не значение по умолчанию |
|
|
Параметр Hibernate ORM для возможности переопределения, если в проекте используется не значение по умолчанию |
scanning-scope - область сканирования. По умолчанию MODULE. Возможные значения:
MODULE— сканировать только классы текущего модуля;MODULE_DEPENDENCIES— сканировать классы текущего модуля и классы зависимостей модуля (исключая зависимости зависимостей);WHOLE_PROJECT— сканировать классы текущего модуля и все его зависимости (включая транзитивные)
Значение выбирается на основании структуры проекта — есть ли классы модели в подключаемых библиотеках.
Параметр применим только к maven плагину, из-за особенностей работы gradle.
Описание модели#
Параметр maven плагина |
Параметр gradle плагина |
Описание |
|---|---|---|
|
|
Название модели |
|
|
Версия модели |
|
|
Название файла. Может заканчиваться на |
|
|
Пакеты, в которых нужно искать классы модели |
|
|
Одиночные классы, которые нужно добавить к поиску |
|
|
Пакеты, которые нужно исключить из поиска |
|
|
Классы, которые нужно исключить из поиска |
|
|
Название файла белого списка (который будет создан). По умолчанию |
|
|
Переопределение тип поля версионирования. Указанный тип будет использоваться для всех полей с аннотацией @Version при генерации файла описания модели |
|
|
Установка класса для трансформации модели |
В параметрах packages, additional-types, exclude-packages, exclude-types, additional-primitive-types можно указывать список через запятую. Параметры не чувствительны к пробелам и переносам, поэтому для удобства список можно форматировать.
С помощью этих параметров задается множество классов для поиска.

Синим отмечено множество классов, включенных в поиск. Красным — исключенных.
Исключение классов#
Исключать можно только классы, на которые нет ссылок из других классов, в противном случае сканирование завершится с ошибкой. Модель должна содержать все классы, даже если их нет в белом списке.
Регистрация примитивных типов#
Для проверки согласованности модели в плагине предусмотрен список примитивных типов.
Все типы, на которые ссылаются поля в модели, должны либо присутствовать как сущности в модели, либо присутствовать в списке примитивных типов.
Если тип поля фактически является примитивным, но при этом он отсутствует в списке, то зарегистрируйте новый примитивный тип, используя параметр additional-primitive-types.
Трансформация модели#
Если необходимо внести изменения в сгенерированную модель воспользуйтесь функциональностью трансформации: в параметре customModelTransformer укажите полное имя класса-трансформатора. Класс должен быть наследником Function<DataModel,Datamodel>.
Пример класса-трансформатора:
package my.packag;
import com.sbt.eip.metamodel.integration.ldm.dto.DataModel;
import java.util.function.Function;
public class MyTransformer implements Function<DataModel, DataModel> {
@Override
public DataModel apply(DataModel dataModel) {
... // необходимые изменения в модели
return transformedDataModel;
}
}
Необходимая зависимость DataModel находится в артефакте:
<dependency>
<groupId>sbp.eip.metamodel</groupId>
<artifactId>eip-metamodel-ldm</artifactId>
<version>5.7.0</version>
</dependency>
Для того, чтобы класс-трансформатор не попадал в состав дистрибутива, расположите его в тестовом исходном коде.
При расположении в тестах есть несколько особенностей:
класс должен быть размещен в том же модуле, к которому подключен плагин-сканер;
класс должен быть скомпилирован к моменту запуска сканирования (для maven проектов нужно будет поменять фазу работы плагина на
<phase>process-test-classes</phase>);тестовые классы попадут в область сканирования. Если в них присутствуют Entity-классы, они так же попадут в результирующую модель. Для их исключения используйте параметры
exclude-packagesилиexclude-types.