I am sure you have been in the following situation: you want to mavenize a web application project.
For this, you create a basic dynamic web application in Eclipse:
You then import the application you want to build:
After the import is done, you create a pom file.
You then update your eclipse configuration files via 'mvn clean eclipse:eclipse'
Finally you try to build your web application (war file) via 'mvn clean install'
However you get a bad surprise: First you are getting a BUILD ERROR:
Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
... and even though you seem to have created a war file, it only contains empty META-INF, WEB-INF and classes folders:
The problem is that your web.xml file is not picked up by your maven build, because by default maven expects to find your web.xml inside src/main/resources.
One option is to refactor your project and move your web.xml under src/main/resources/WEB-INF.
A better option is to modify your pom file and add a maven war plugin configuration section to your build/plugins section.
In my case, I am specifying that my web.xml file is located under a WebContent folder, relative to the Pom file:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <!-- <configuration> section added to pick up the WEB-INF/web.xml inside WebContent --> <configuration> <webResources> <resource> <directory>WebContent</directory> </resource> </webResources> </configuration> </plugin>
When done, you just need to rebuild your web application (war file) via 'mvn clean install' and you should then obtain a BUILD SUCCESSFUL with the war file content you were expecting!