tags:

views:

1036

answers:

3

I am trying to add some filtering to the application context file, which resides in the WEB-INF directory.

I have the file which is to be filtered (xmlgateway-context.xml) in the folder /src/main/resources.

I have the properties files (config-e05.properties) in the folder src/main/filters

And I have the POM set up as follows:

<!-- environment profiles -->
<profiles>
 <profile>
  <id>e04</id>
  <properties>
   <targetenv>e04</targetenv>
  </properties>
 </profile>
 <profile>
  <id>e05</id>
  <properties>
   <targetenv>e05</targetenv>
  </properties>
 </profile>
</profiles>

<!-- build settings (filtering) -->
<build>
 <filters>
  <filter>src/main/filters/config-${targetenv}.properties</filter>
 </filters>
 <resources>
  <resource>
   <targetPath>WEB-INF</targetPath>
   <filtering>true</filtering>
   <directory>src/main/resources</directory>
  </resource>
 </resources>
</build>

This will mvn install correctly, but when I open the output war file, I was expecting the file xmlgateway-context.xml to be in the /WEB-INF directory, but it ends up in the folder /WEB-INF/classes/WEB-INF.

How can I get this file into the right place.

Alternatively, can I put the application context into a different location and have it referenced there.

+1  A: 

you should configure filtering via the maven war plugin: checkout these examples.

dfa
Would have accepted this as well if I could thanks to links, but @peakit wins due to cut and paste laziness for me.
Xetius
+6  A: 
<plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
    <webResources>
     <resource>
      <directory>${basedir}/src/main/webapp/WEB-INF</directory>
      <filtering>true</filtering>
      <targetPath>WEB-INF</targetPath>
      <includes>
       <include>**/xmlgateway-context.xml</include>
      </includes>
     </resource>
    </webResources>
    </configuration>
</plugin>

Add the above to your pom.xml. EDIT: Just to explain what the above conf is doing. With this added, mvn is going to filter files under src/main/webapp/WEB-INF and in particular filter the included files xmlgateway-context.xml and after filtering it is going to push the files in WEB-INF folder (thats what the target tag is saying).

Update if something is not clear.

peakit
Cut and pasted and works as described. Ta muchly.
Xetius
+1  A: 

Put the file xmlgateway-context.xml in src/main/webapp/WEB-INF and configure like this:

<build>
    <filters>
        <filter>src/main/filters/config-${targetenv}.properties</filter>
    </filters>
    <resources>
        <resource>
                <filtering>true</filtering>
                <directory>src/main/webapp/WEB-INF</directory>
        </resource>
    </resources>
</build>
EJB