На каком этапе сборки Maven ресурсы копируются в директорию target?

Ответ

Ресурсы копируются в target на фазе process-resources (для main-ресурсов) и process-test-resources (для test-ресурсов) жизненного цикла default.

Стандартный путь копирования:

  • src/main/resourcestarget/classes
  • src/test/resourcestarget/test-classes

Почему именно на этой фазе? Потому что ресурсы (конфиги, свойства, XML) должны быть доступны в classpath до этапа компиляции (compile) и выполнения тестов (test).

Пример кастомизации в pom.xml:

<build>
    <resources>
        <resource>
            <!-- Указываем нестандартную директорию -->
            <directory>src/main/config</directory>
            <!-- Фильтрация (подстановка значений из properties) -->
            <filtering>true</filtering>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <!-- Можно исключать файлы -->
            <excludes>
                <exclude>**/secrets.*</exclude>
            </excludes>
        </resource>
    </resources>
</build>

Порядок фаз по умолчанию: validateinitializeprocess-resourcescompile → ...