Once you’ve compiled, tested, and packaged your web
application, you’ll likely want to deploy it to a servlet container and
test the index.jsp that was created by the Maven
Archetype plugin. Normally, this would involve downloading something like
Jetty or Apache Tomcat, unpacking a distribution, copying your
application’s WAR file to a
webapps/ directory, and then starting your container.
Although you can still do such a thing, there is no need. Instead, you can
use the Maven Jetty plugin to run your web application within Maven. To do
this, we’ll need to configure the Maven Jetty plugin in our project’s
pom.xml. Add the plugin element
shown in the following example to your project’s build
configuration.
Example 5.2. Configuring the Jetty Plugin
<project>
[...]
<build>
<finalName>simple-webapp</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
</build>
[...]
</project>Once you've configured the Maven Jetty Plugin in your project's
pom.xml, you can then invoke the Run goal of the
Jetty plugin to start your web application in the Jetty Servlet container.
Run mvn jetty:run as follows:
~/examples$ mvn jetty:run
...
[INFO] [jetty:run]
[INFO] Configuring Jetty for project: simple-webapp Maven Webapp
[INFO] Webapp source directory = \
~/svnw/sonatype/examples/simple-webapp/src/main/webapp
[INFO] web.xml file = \
~/svnw/sonatype/examples/simple-webapp/src/main/webapp/WEB-INF/web.xml
[INFO] Classes = ~/svnw/sonatype/examples/simple-webapp/target/classes
2007-11-17 22:11:50.532::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /simple-webapp
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] Webapp directory = \
~/svnw/sonatype/examples/simple-webapp/src/main/webapp
[INFO] Starting jetty 6.1.6rc1 ...
2007-11-17 22:11:50.673::INFO: jetty-6.1.6rc1
2007-11-17 22:11:50.846::INFO: No Transaction manager found
2007-11-17 22:11:51.057::INFO: Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
After Maven starts the Jetty Servlet container, load the URL http://localhost:8080/simple-webapp/
in a web browser. The simple index.jsp generated by
the Archetype is trivial; it contains a second-level heading with the text
"Hello World!". Maven expects the document root of the web application to
be stored in src/main/webapp. It is in this directory
where you will find the index.jsp file shown in Example 5.3, “Contents of src/main/webapp/index.jsp”.
Example 5.3. Contents of src/main/webapp/index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
In src/main/webapp/WEB-INF, we will find the
smallest possible web application descriptor in web.xml, shown in
this next example:
Example 5.4. Contents of src/main/webapp/WEB-INF/web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> </web-app>

