Maven, Eclipse and Tomcat: alternative to WTP
Despite some frustrations, I like using Maven in my
Java projects for its dependency management and standardized project layouts.
Since I develop in Eclipse primarily, I use the
m2eclipse plugin to make Eclipse maven-aware.
Which generally works well, except in the case of developing web applications.
Eclipse’s primary tool for managing web application development is the web
tools project or WTP. WTP takes a fairly
heavyweight approach to web apps; in particular it likes to copy the contents
of a project into a special location (typically
${workspace}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
) and use
that as the web application context. It has to re-copy, including maven
dependencies, when code is updated. Partly for this reason, and partly because
WTP and m2eclipse don’t always play
nice,
I’ve been looking at alternatives.
A colleague recommends the Sysdeo Tomcat
plugin for Eclipse, which runs
only Tomcat (fairly obviously), not the other
app-containers that WTP supports, but does so in-place: there’s no need for
code to be copied to a temporary context. Although there’s no Eclipse update
URL, it’s easy enough to install the plugin. The plugin provides a Tomcat
extension
DevLoader,
which puts dependencies (including maven-managed dependencies) on the app’s
classpath without them needing to be in webapp/lib
. To enable the DevLoader
functionality with Tomcat version 6, I had to follow the instructions on this
blog
post
to make a devloader.jar
, rather than follow the instructions on the plugin
website (which I suspect worked for older versions of Tomcat).