Ресурсы копирования Maven выполняются дважды один раз для профиля один раз по умолчанию

У меня есть проект maven, в котором я определил сборку на основе profile, включая пользовательскую конфигурацию maven-resource-plugin.

...
<profiles>
    <profile>
        <id>docker</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                    <executions>
                        <execution>
                            <id>resources</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${basedir}/target/classes</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>${basedir}/src/main/resources</directory>
                                        <filtering>false</filtering>
                                        <excludes>
                                            <exclude>log4j2*.xml</exclude>
                                            <exclude>docker/*</exclude>
                                        </excludes>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
...

Теперь, когда я выполняю, например, mvn compile -P docker, я вижу, что подключаемый модуль ресурсов выполняется дважды.

ИНФОРМАЦИЯ] --- maven-resources-plugin: 3.1.0: copy-resources (ресурсы) @ mma-access-management-auth-server ---

[ИНФОРМАЦИЯ] Использование кодировки UTF-8 для копирования отфильтрованных ресурсов.

[INFO] Копирование 2 ресурсов

[ИНФОРМАЦИЯ] --- maven-resources-plugin: 3.1.0: ресурсы (ресурсы по умолчанию) @ mma-access-management-auth-server ---

[ИНФОРМАЦИЯ] Использование кодировки UTF-8 для копирования отфильтрованных ресурсов.

[INFO] Копирование 5 ресурсов

Это правильно? Мне действительно нужно исключить все ресурсы для сборки по умолчанию, чтобы они не копировались снова через ресурсы по умолчанию?


person Chief Peter    schedule 07.10.2018    source источник
comment
это вроде как. плагины могут запускаться несколько раз в течение жизненного цикла и даже на одной и той же фазе. Подсказкой будет указанный вами идентификатор выполнения: ‹id› ресурсы ‹/id› - если вы хотите заменить значение по умолчанию, вам нужно использовать тот же идентификатор выполнения - если вы хотите поместить конфигурацию в блок выполнения. Если есть разные, плагин запускается за настроенное выполнение.   -  person wemu    schedule 07.10.2018


Ответы (1)


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

...
<profiles>
    <profile>
        <id>docker</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>${basedir}/src/main/resources</directory>
                                <filtering>false</filtering>
                                <excludes>
                                    <exclude>log4j2*.xml</exclude>
                                    <exclude>docker/*</exclude>
                                </excludes>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
...
person Markus Mensinger    schedule 07.10.2018
comment
Когда я не привязываю его к фазе / цели, плагин не выполняется? - person Chief Peter; 07.10.2018
comment
Да, если вы не привязываете его в профиле, плагин запускается только один раз с конфигурацией, указанной в вашем профиле. - person Markus Mensinger; 07.10.2018
comment
Спасибо, это работает. Я упустил возможность вынести конфигурацию за пределы раздела казней. - person Chief Peter; 07.10.2018