Плагин для maven проектов#

Для сканирования проекта добавьте плагин в pom-файл:

<plugin>
    <groupId>sbp.eip.metamodel</groupId>
    <artifactId>eip-metamodel-scanner-maven-plugin</artifactId>
    <version>5.4.0</version>
    <configuration>
<!--    Необязательные параметры:-->
<!--    <formatted-output>false</formatted-output>-->
<!--    <strict-type-check>true</strict-type-check>-->
<!--    <default-class>java.lang.String</default-class>-->
<!--    <componentCode>unknown</componentCode>-->
<!--    <interrupt-on-error>false</interrupt-on-error>-->
<!--    <internal-path>classes</internal-path>-->
<!--    <outputDirectory>${project.build.directory}</outputDirectory>-->
<!--    <scanning-scope>MODULE</scanning-scope>-->
<!--    <schema-version>1.0</schema-version>-->
<!--    <additional-primitive-types>-->
<!--        some.additional.PrimitiveType,-->
<!--        some.additional.AnotherPrimitiveType-->
<!--    </additional-primitive-types>-->
        <models>
            <jpa>
                <model-name>название модели</model-name>
                <model-version>версия модели</model-version>
                <file-name>название_файла.ldm.xml</file-name>
                <packages>
                    my.packages,
                    com.my.packages
                </packages>
<!--            Необязательные параметры: -->
<!--            <additionalTypes>-->
<!--                com.additional.package.MyType1,-->
<!--                com.another.package.MyType2-->
<!--            </additionalTypes>-->
<!--            <excludePackages>-->
<!--                my.packages.excluded.package1,-->
<!--                my.packages.excluded.package2-->
<!--            </excludePackages>-->
<!--            <excludeTypes>-->
<!--                my.packages.some.another.path.ExcludedType1,-->
<!--                my.packages.another.path.ExcludeType2-->
<!--            </excludeTypes>-->
<!--            <version-field-override-type>java.lang.Long</version-field-override-type>-->
<!--            <whitelist-file-name>whitelist.txt</whitelist-file-name>-->
<!--            <customModelTransformer>my.packag.MyTransformer</customModelTransformer>-->
            </jpa>
        </models>
    </configuration>

<!--Привязка задачи плагина к задаче сборки приложения-->
    <executions>
        <execution>
            <id>process</id>
            <phase>process-classes</phase>
<!--        При размещении класса-трансформатора в тестах, указать другую фазу -->
<!--        <phase>process-test-classes</phase>-->
            <goals>
                <goal>metamodel_scanner</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Обязательные свойства модуля:

<properties>
    ...
    <meta.componentId>код компонента</meta.componentId>
    ...
</properties>

Внимание!

В многомодульных проектах добавляйте плагин в pom-файл того модуля, в котором содержатся классы модели. Данное требование предъявляется из-за специфики maven при добавлении плагина в корневой pom-файл. В многомодульном проекте результатом работы maven будет несколько файлов с частями модели, а не один файл с объединенной моделью.

Если модель содержится в нескольких модулях рекомендуется создать новый модуль, в который добавить зависимости на все модули с классами модели. Плагин, в таком случае, добавляйте только в него.

Описание параметров приведено в разделе «Параметры плагина».

Взаимодействие с другими плагинами при сборке#

Плагин работает на фазе «process-classes», так как ему нужны результаты компиляции. Для использования xml-файл с моделью при работе в других плагинах необходимо, чтобы другие плагины не запускались на более ранней фазе (например «process-sources»).

Фазу работы другого плагина можно переопределить, изменив или добавив параметры в его описание следующим образом:

 <executions>
     <execution>
         <id>metaload</id>
         <phase>prepare-package</phase>
     </execution>
 </executions>