is there a way to have two web.xml files and select the appropriate one depending on the profile?
Yes, within each profile you can add a configuration of the maven-war-plugin
and configure each to point at a different web.xml
.
<profiles>
<profile>
<id>profile1</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>/path/to/webXml1</webXml>
</configuration>
</plugin>
...
As an alternative to having to specify the maven-war-plugin
configuration in each profile, you can supply a default configuration in the main section of the POM and then just override it for specific profiles.
Or to be even simpler, in the main <build><plugins>
of your POM, use a property to refer to the webXml
attribute and then just change it’s value in different profiles
<properties>
<webXmlPath>path/to/default/webXml</webXmlPath>
</properties>
<profiles>
<profile>
<id>profile1</id>
<properties>
<webXmlPath>path/to/custom/webXml</webXmlPath>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>${webXmlPath}</webXml>
</configuration>
</plugin>
...