Why is maven-war-plugin failing for web.xml missing if I configured it not to fail on missing web.xml?
This should work:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
<executions>
<execution>
<id>prepare-war</id>
<phase>prepare-package</phase>
<configuration>
<archiveClasses>false</archiveClasses>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix />
</manifest>
<manifestEntries>
<Implementation-Build>${build.number}</Implementation-Build>
<Implementation-Title>${project.name}</Implementation-Title>
<Built-By>${user.name}</Built-By>
<Built-OS>${os.name}</Built-OS>
<Build-Date>${build.date}</Build-Date>
</manifestEntries>
</archive>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>./target/dist</directory>
</resource>
</webResources>
</configuration>
</execution>
</executions>
</plugin>
Please notice that the <failOnMissingWebXml>false</failOnMissingWebXml>
section has been moved up to the plugin configuration rather than the execution.
The execution ID in the POM is prepare-war
. Maven runs its own default execution of the war plugin for projects with packing type war
. The default execution has ID default-war
. As the POM is currently configured, the war
goal is running twice.
If you look at the error message:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.4:war (default-war) on project com.specktro.orchid.operations.portal.frontend: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
You may see the execution ID that fails in parenthesis (default-war)
. If you change the execution ID to default-war
your problem will go away, AND you will no longer have two executions of the war goal running.