第 3 章 Maven2下的web项目

刚才咱们见识的是使用Maven2构建j2se项目,项目的成果是一个jar包,它需要在安装了JRE的客户机上运行。

下一步咱们使用Maven2构建一个j2ee项目,项目的成果是一个war包,只需把它部署在服务器上,就可以使用浏览器访问。

3.1. war项目的目录结构

我们先从项目的目录结构开始入手。

+ ch03/
  + src/
    + main/
      + resources/
      + webapp/
        + WEB-INF/
          * web.xml
        * index.jsp
  * pom.xml
        

pom.xml文件中需要将packaging从jar修改为war。

项目的src/main/目录下多了resources/和webapp/两个目录。resources/目录暂时是空的,它现在只是用来保证在项目构建时在target/下生成classes目录,它在项目中的具体作用我们会在以后细细道来。

现在我们需要注意的只有webapp/这个目录,这个目录下放置着web所需的页面资源以及配置文件,这里的WEB-INF/目录和它下面的web.xml是必须存在的,如果省略了它们,打包时就会出错。

ch03仅仅用来演示如何用Maven2构建web项目,其中并未包含任何java文件,我们在稍后的例子中会接触到更复杂的例子。

3.2. web.xml和jsp中的内容

web.xml现在是最简状态,没有包含任何配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

</web-app>
        

index.jsp现在只用来显示几条信息,之后我们可以通过浏览器访问服务器,这样就可以验证应用运行是否正常。

<%@page contentType="text/html;charset=UTF-8"%>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title>ch01</title>
  </head>
  <body>
    <h1>贩卖Maven2</h1>
    <p>Hello World</p>
    <p>Welcome to <a href="http://www.family168.com/">www.family168.com</a></p>
  </body>
</html>
        

3.3. 打包

进入ch03目录下,执行mvn package进行打包。

D:\svn\docbooks\projects\maven2\maven2\lingo-sample\ch03>mvn package
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building chapter 03
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] [compiler:compile]
[INFO] No sources to compile
[INFO] [resources:testResources]
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\svn\docbooks\projects\maven2\maven2\lingo-sample\ch03\src\test\resources
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] [war:war]
[INFO] Packaging webapp
[INFO] Assembling webapp[ch03] in [D:\svn\docbooks\projects\maven2\maven2\lingo-sample\ch03\target\ch03-1.0]
[INFO] Processing war project
[INFO] Copying webapp resources[D:\svn\docbooks\projects\maven2\maven2\lingo-sample\ch03\src\main\webapp]
[INFO] Webapp assembled in[125 msecs]
[INFO] Building war: D:\svn\docbooks\projects\maven2\maven2\lingo-sample\ch03\target\ch03-1.0.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Mon May 25 13:38:16 CST 2009
[INFO] Final Memory: 9M/254M
[INFO] ------------------------------------------------------------------------
        

操作结束后的目录结构会变成下面这样:

+ ch03/
  + src/
    + main/
      + resources/
      + webapp/
        + WEB-INF/
          * web.xml
        * index.jsp
  + target/
    + ch03-1.0
      + META-INF
      + WEB-INF
        + classes
        * web.xml
      * index.jsp
    + classes
    + maven-archiver
      * pom.properties
    + war
      + work
        * webapp-cache.xml
    * ch03-1.0.war
  * pom.xml
        

我们所需要的只有target/目录下的ch03-1.0.war,把它放到tomcat的webapps/目录下,部署成功之后就可以使用浏览器进行访问。在http://localhost:8080/ch03-1.0/下应该看到如下内容:

贩卖Maven2
Hello World
Welcome to www.family168.com