Мне бы хотелось, чтобы мой проект Java с использованием Maven был настроен таким образом, чтобы при локальной разработке и при выполнении модульных тестов ресурсы брались из стандартных каталогов src/main/resources
и src/test/resources
, а при применении профиля ресурсы перезаписываются специфичными для развертывания. В идеале ресурсы, специфичные для профиля, должны быть подмножеством полных ресурсов, поэтому процесс должен работать, сначала записывая обычные ресурсы, а затем применяя специфические для профиля, поверх первого.
Моя компоновка каталогов стандартная, с профилями ресурсов под src/main/env/{profile}
.
Мне удалось сделать это, используя несколько строф в разделе build
/ resources
:
<profiles>
<profile>
<id>dev</id>
<activation><activeByDefault>true</activeByDefault></activation>
<properties>
<targetEnv>dev</targetEnv>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<targetEnv>test</targetEnv>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<targetEnv>prod</targetEnv>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/env/${targetEnv}</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<build>
Это работает, однако моя первая попытка была с двумя каталогами ресурсов, упорядоченными в противоположном направлении (сначала обычный каталог, специфичный для профиля), чтобы соответствовать процессу перезаписи. Вместо этого он перезаписывал специфичные для профиля файлы обычными.
Гарантирует ли Maven заказ на строфы под build
/ resources
на всех?