5.4. 配置Jetty插件

在你已经编译,测试并且打包了你的 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 的内容”

Example 5.3. src/main/webapp/index.jsp 的内容

<html>
  <body>
    <h2>Hello World!</h2>
  </body>
</html>

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>