Существует очень простое решение, подходящее для небольших проектов с jar
упаковкой (я не проверял его на war
упакованных проектах).Единственным недостатком является то, что вы должны дублировать все ресурсы, но если ваш единственный ресурс - log4j.properties
, это не проблема.
Если у вас есть дерево каталогов, подобное этому:
...
Вы должны иметь следующую помпу:
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src/</sourceDirectory>
<resources>
<resource>
<directory>${resources.path}</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<resources.path>resources/prod</resources.path>
</properties>
</profile>
<profile>
<id>dev</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<resources.path>resources/dev</resources.path>
</properties>
</profile>
</profiles>
Тогда при использовании dev
используется профиль log4j.properties
из resources/dev
.Если вы используете какой-либо другой профиль или вообще не используете его, тогда используется log4j.properties
из resources/prod
.Поэтому ваш *.jar
должен выглядеть следующим образом:
Конечно, если у вас другое расположение ресурсов, например main/java/resources/...
, вы должны указать его вместо resources/...