Here's a challenge: why is this build failing?
I have configured Maven's maven-war-plugin not to fail on an abscent web.xml file, it seems:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>prepare-war</id>
<phase>prepare-package</phase>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<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>
But despite of this configuration it keeps failing like this:
[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]
I actually don't have the web.xml, so I need it to assemble the war without it.
I tried adding a bogus <webXml>none</webXml>
into the config, but that didn't change anything...
What am I missing?
The problem is related to the version that you are currently working with. You need to see your local repository and see the version that you have already downloaded. Go to your
.m2
folder and look forIn that folder you can see the versions that are available for you.
Change the version for the version that you have in your folder and it works!
The execution ID in the POM is
prepare-war
. Maven runs its own default execution of the war plugin for projects with packing typewar
. The default execution has IDdefault-war
. As the POM is currently configured, thewar
goal is running twice.If you look at the error message:
You may see the execution ID that fails in parenthesis
(default-war)
. If you change the execution ID todefault-war
your problem will go away, AND you will no longer have two executions of the war goal running.This should work:
Please notice that the
<failOnMissingWebXml>false</failOnMissingWebXml>
section has been moved up to the plugin configuration rather than the execution.