How to replace a value in web.xml with a Maven property?

maven, parameters, servlets, web.xml

Solution

Add to your pom section:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <webResources>
            <resource>
                <filtering>true</filtering>
                <directory>src/main/webapp</directory>
                <includes>
                    <include>**/web.xml</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

See Maven: Customize web.xml of web-app project for more details

Problem

I have a Maven project that downloads some test files into its build directory `./target/files`. These files should then be available to a servlet, which I can easily achieve by hardcoding the full path as an `<init-param>` of the servlet: ``` <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>my.package.TestServlet</servlet-class> <init-param> <param-name>filepath</param-name> <param-value>/home/user/testproject/target/files</param-value> </init-param> </servlet> ``` How can I avoid hardcoding the full path and use a dynamic parameter replacement instead? I tried the following, but it did not work: ``` <param-value>${project.build.directory}/files</param-value> ```

Original source

Related problems