Das Ziel ist: In der Spring-Konfiguration Platzhalter verwenden, die je nach Maven-Profil anders belegt werden.
pom.xml
, hier muss Filterung konfiguriert werden:
- Properties definieren:
[xml]
<properties>
<location>remote</location>
</properties>
[/xml] - Ersetzung aktivieren, im build-Baum der POM bzw. des jeweiligen Profils. Dies ersetzt in den spezifizierten Dateien Einträge der Form
${location}
durch die entsprechenden Werte:
[xml]
<resources>
<resource>
<directory>src${file.separator}main${file.separator}resources</directory>
<filtering>true</filtering>
<includes>
<include>**${file.separator}*.xml</include>
<include>*.xml</include>
<include>**${file.separator}*.properties</include>
<include>*.properties</include>
</includes>
</resource>
<resource>
<directory>src${file.separator}main${file.separator}resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**${file.separator}*.xml</exclude>
<exclude>*.xml</exclude>
<exclude>**${file.separator}*.properties</exclude>
<exclude>*.properties</exclude>
</excludes>
</resource>
</resources>
[/xml]
Spring-Konfiguration (applicationContext.xml
in WEB-INF/
):
placeholderConfig
definieren:
[xml]
<bean id=”placeholderConfig”
class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
<property name=”locations”>
<list>
<value>classpath:ejb-configuration.properties</value>
</list>
</property>
</bean>
[/xml]- Variable verwenden:
[xml]
<jee:jndi-lookup id=”gradschoolManager” jndi-name=”GradschoolManagerBean/${location}”>
<jee:environment>
java.naming.factory.initial=org.jboss.naming.NamingContextFactory
java.naming.provider.url=${java.naming.provider.url}
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
</jee:environment>
</jee:jndi-lookup>
[/xml]
Jetzt muss nur noch eine entsprechende Properties-Datei angelegt werden, z.B. unter /src/main/resources
:
[xml]
java.naming.provider.url=${java.naming.provider.url}
location=${location}
[/xml]
Wie läuft das ab?
Bei einem Maven-Lauf werden zunächst die Variablen in der Properties-Datei ersetzt. Spring ist so konfiguriert, dass die (ersetzten) Werte aus dieser Datei gelesen und genutzt werden.