Как использовать несколько процессоров аннотации с плагином maven-compiler-plugin - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть проект с загрузочной пружиной, в котором есть lombok и mapstruct, и в качестве инструмента сборки используется maven. Мне нужно, чтобы аннотации были обработаны во время компиляции с результирующими сгенерированными исходниками, упакованными с последним jar. Сборка прошла успешно. Однако в последнем фляге отсутствует класс реализации mapstruct. Ошибка при попытке запустить приложение с весенней загрузкой:


Приложение не удалось запустить


Описание:

Поле salesforceObjectMapper в com .some_org.service.salesforce.object.processor.SalesforceObjectProcessor требуется компонент типа 'com.some_org.service.salesforce.object.mapper.SalesforceObjectMapper', который не найден.

Действие:

Рассмотрите возможность определения bean-компонента типа 'com.some_org.service.salesforce.object.mapper.SalesforceObjectMapper' в вашей конфигурации.

Вот моя настройка подключаемого модуля maven-compiler:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
            </path>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.2.0.Final</version>
            </path>
        </annotationProcessorPaths>
        <compilerArgs>
            <compilerArg>-Amapstruct.suppressGeneratorTimestamp=true</compilerArg>
            <compilerArg>-Amapstruct.suppressGeneratorVersionInfoComment=true</compilerArg>
        </compilerArgs>
    </configuration>
</plugin>

1 Ответ

0 голосов
/ 11 апреля 2020

В конечном итоге это удалось, переопределив цель компиляции по умолчанию на этапе компиляции, используя выполнение, как показано ниже:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <executions>
        <execution>
            <id>Compile With Annotation Processing</id>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.12</version>
                    </path>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.2.0.Final</version>
                    </path>
                </annotationProcessorPaths>
                <compilerArgs>
                    <compilerArg>-Amapstruct.suppressGeneratorTimestamp=true</compilerArg>
                    <compilerArg>-Amapstruct.suppressGeneratorVersionInfoComment=true</compilerArg>
                </compilerArgs>
            </configuration>
        </execution>
    </executions>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...