Ответ 1
Как часто, существует несколько способов реализации такого рода вещей. Но большинство из них отличаются от тех же функций: профилей и фильтрации. Я покажу самый простой подход.
Сначала включите фильтрацию ресурсов:
<project>
...
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
</project>
Затем объявите владельца места в src/main/resources/my_config.properties
, например:
myprop1 = somevalue
myprop2 = ${foo.bar}
Наконец, объявите свойства и их значения в профиле:
<project>
...
<profiles>
<profile>
<id>env-dev</id>
<activation>
<property>
<name>env</name>
<value>dev</value>
</property>
</activation>
<properties>
<foo.bar>othervalue</foo.bar>
</properties>
</profile>
...
</profiles>
</project>
И запустите maven с заданным профилем:
$ mvn process-resources -Denv=dev [INFO] Scanning for projects... ... $ cat target/classes/my_config.properties myprop1 = somevalue myprop2 = othervalue
Как я уже сказал, существуют вариации вокруг этого подхода (например, вы можете размещать значения для фильтрации в файлах), но это поможет вам начать.