在你已经编译,测试并且打包了你的 web 应用之后,你会想要将它部署到一个 servlet 容器中,然后测试一下由 Maven
Archetype 插件创建的 index.jsp
。通常情况下,你需要下载 Jetty 或者
Apache Tomcat,解压分发包,复制你的应用程序 WAR 文件至
webapps/
目录,然后启动你的容器。 现在,实现同样的目的,你不再需要做这些事情。
取而代之的是,你可以使用 Maven Jetty 插件在 Maven 中运行你的 web 应用。为此,你需要在项目的
pom.xml
中配置 Maven Jetty 插件。
在你项目的构建配置中添加如下插件元素:
Example 5.2. 配置 Jetty 插件
<project> [...] <build> <finalName>simple-webapp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> </plugins> </build> [...] </project>
在项目的 pom.xml
中 配置好 Maven Jetty 插件之后,你就可以调用 Jetty
插件的 Run 目标在 Jetty Servlet 容器中启动你的 web 应用。如下运行 mvn
jetty:run :
~/examples$ mvn jetty:run ... [INFO] [jetty:run] [INFO] Configuring Jetty for project: simple-webapp Maven Webapp [INFO] Webapp source directory = \ /Users/tobrien/svnw/sonatype/examples/simple-webapp/src/main/webapp [INFO] web.xml file = \ /Users/tobrien/svnw/sonatype/examples/simple-webapp/src/main/webapp/WEB-INF/web.xml [INFO] Classes = /Users/tobrien/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 = \ /Users/tobrien/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 - if your webapp requires one,\ please configure one. 2007-11-17 22:11:51.057::INFO: Started [email protected]:8080 [INFO] Started Jetty Server
当 Maven 启动了 Jetty Servlet 容器之后,在浏览器中载入 URL http://localhost:8080/simple-webapp/
。 Archetype 生成的简单页面 index.jsp
没什么价值;它包含了一个文本为“Hello
World!”的二级标题。 Maven 认为 web 应用程序的文档根目录为
src/main/webapp
。这个目录就是存放
index.jsp
的目录 。 index.jsp
的内容为
Example 5.3, “src/main/webapp/index.jsp 的内容”:
在 src/main/webapp/WEB-INF
目录中我们会找到可能是最小的 web
应用程序描述符 web.xml
。
Example 5.4. 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>