12.10.2010
Spring, Maven und Variablen
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:
<properties> <location>remote</location> </properties>
- 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:<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>
Spring-Konfiguration (applicationContext.xml in WEB-INF/):
placeholderConfigdefinieren:<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:ejb-configuration.properties</value> </list> </property> </bean>- Variable verwenden:
<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>
Jetzt muss nur noch eine entsprechende Properties-Datei angelegt werden, z.B. unter /src/main/resources:
java.naming.provider.url=${java.naming.provider.url}
location=${location}
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.
Single Sign-On