Как отключить производный флаг для сгенерированного исходного кода из Mapstruct и как генерировать классы Mapstruct только на локальном ПК, а не на сервере сборки? - PullRequest
1 голос
/ 03 мая 2019

Первый вопрос: Mapstruct генерирует код для целевой папки аннотаций, у которой есть маркер «производный». Это игнорируется RTC, поэтому я не могу проверить сгенерированный код (не спрашивайте меня, почему я хочу это сделать - мне это нужно). Есть ли возможность отключить производный маркер в папке gen, чтобы сгенерированные классы (.java) могли быть добавлены в репозиторий? Второй вопрос: классы Mapstruct должны генерироваться на моей локальной машине, а не на сервере сборки. Как я могу настроить maven, чтобы сделать это только локально?

Заранее спасибо.

В настоящее время мой pom.xml выглядит так, поскольку я не смог настроить его так, как мне нужно:

<plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <generatedSourcesDirectory>gen</generatedSourcesDirectory>
                <annotationProcessorPaths>
                    <path>
                        <groupId>de.......</groupId>
                        <artifactId>mapstruct_config</artifactId>
                        <version>${config.version}</version>
                    </path>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${org.mapstruct.version}</version>
                    </path>
                </annotationProcessorPaths>
                <compilerArgs>
                    <compilerArg>
                        -Amapstruct.suppressGeneratorTimestamp=true
                    </compilerArg>
                    <compilerArg>
                        -Amapstruct.suppressGeneratorVersionInfoComment=true
                    </compilerArg>
                    <compilerArg>
                        -Amapstruct.unmappedTargetPolicy=WARN
                    </compilerArg>
                </compilerArgs>
            </configuration>
        </plugin>

1: папка gen не имеет производного маркера 2: annotationProcessor работает только на локальной машине

1 Ответ

0 голосов
/ 03 мая 2019

Я предполагаю, что маркер dervied происходит от Eclipse (IntelliJ также делает это). Скорее всего, вам придется вручную отключить это в своей среде IDE, если вы не уверены, будет ли она работать всегда, как обычно эти местоположения применяются из самого Maven.

Для того, чтобы процессор аннотаций мог работать только локально, я думаю, что вам нужно будет добавить собственный профиль maven, в котором вы настроите annotationProcessorPaths, по умолчанию (на CI) не будет annotationProcessorPaths и, следовательно, не будет запускать обработку аннотаций

...