M2E plugin doesn't work with tomcat server
There is an issue for M2E (version 1.0.0.20110607-2117) to generate correct eclipse configuration files especially the .classpath. Once imported a maven project, it will generate the .classpath like below:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
But this will cause the eclipse server runtime like tomcat cannot find those jar libraries. After add the dynamic web application to the server from the server view, and start the server, it will throw exceptions like
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
If we check the workspace
$ lla ~/ibm_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/test-webapp/WEB-INF
There is no folder /lib.
To resovle this problem, just install the m2e-wtp connector. It can be done by open the eclipse Preference -> Maven -> Discovery -> Open Catalog, and find the one Maven Integration for WTP, the version currently is 0.13.1.20110728-1800
After installation, run Maven -> Update project configuration again, the .classpath entry will be generated like:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
Now click Publish on tomcat server, we can find those denpendent libraries were deployed to workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/test-webapp/WEB-INF/lib
And the application can start successfully now.