Filtering Maven files into WEB-INF

38,201

Solution 1

<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>
</plugins>

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.

Solution 2

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

Share:
38,201

Related videos on Youtube

Reinout van Rees
Author by

Reinout van Rees

Geek, pure and simple.

Updated on January 11, 2020

Comments

  • Reinout van Rees
    Reinout van Rees over 4 years

    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.

    • Bozho
      Bozho over 14 years
      I added the maven-2 tag, I guess you don't mind.
  • Reinout van Rees
    Reinout van Rees over 14 years
    Would have accepted this as well if I could thanks to links, but @peakit wins due to cut and paste laziness for me.
  • tomasz_kusmierczyk
    tomasz_kusmierczyk over 10 years
    Just an observation to add, version 2.4 doesn't seem to work with this configuration, the most recent and working with this setting I found was 2.3, cheers.
  • Garret Wilson
    Garret Wilson over 7 years
    How is this different than simply configuring the src/main/webapp directory as a filtered resource directory as any other? What benefit is there to associate it with a configuration of the maven-war-plugin?