Maven Web项目

2023-10-16 19:12:54 浏览数 (2)

1、Web项目创建 官方文档

cmd进入web项目工作空间,执行以下代码:

代码语言:javascript复制
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

 构建成功.实际目录结构如下:

代码语言:javascript复制
project
|-- pom.xml
`-- src
    `-- main
        `-- webapp
            |-- WEB-INF
            |   `-- web.xml
            `-- index.jsp

这里注意和java项目的几个区别:没有test项目、没有在主项目源码下面建立指定的包结构层次.

2、pom.xml

生成的xml内容如下:

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>webgroupid.g</groupId>
  <artifactId>webartifactId</artifactId>
  <version>1.0.0</version>
  <packaging>war</packaging>

  <name>webartifactId Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

和java项目相比,定位jar包的参数是一样的,区别是打包方式web项目是war包

注:这里删除了build节点

3、构建测试代码

在main文件夹下建立package目录

mainjavawebpackagew,在此目录下新增TestServlet.java类,代码如下:

代码语言:javascript复制
package webpackage.w;
    
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
    
public class TestServlet extends HttpServlet{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("maven web test");
    }
}

修改web.xml注册Servlet,代码如下:

代码语言:javascript复制
<!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>
  <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>webpackage.w.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>
</web-app>

修改index.jsp,添加访问Servlet的代码

代码语言:javascript复制
<html>
<body>
<a href="TestServlet">访问TestServlet</a>
</body>
</html>

4、添加servlet-api依赖

使用HttpServlet需要引入servlet-api的包

首先进入https://mvnrepository.com/仓库,搜索servlet-api

 点击进入,选择一个符合要求的版本,点击进入

 修改pom.xml,将上图的dependency内容拷贝纸pom.xml,添加依赖

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>webgroupid.g</groupId>
  <artifactId>webartifactId</artifactId>
  <version>1.0.0</version>
  <packaging>war</packaging>

  <name>webartifactId Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
  </dependencies>
</project>

5、编译项目

cmd进入pom.xml所在的目录执行以下代码:

代码语言:javascript复制
mvn compile

 构建成功,这里去阿里云maven仓库下载了javax.servlet-api-4.0.1.jar包.

6、打包编译成功的web项目

 cmd进入pom.xml所在的目录执行以下代码:

代码语言:javascript复制
mvn clean package

 生成成功,并给出了war包的地址.

7、部署war包到tomcat

部署前确保tomcat安装配置成功,具体参考Tomcat安装与配置,6中生成war包的时候同时会生成发布目录

 在tomcat中部署war包,会将war解压成目录,所以这里直接将webartifactId-1.0.0目录复制到tomcat目录下的webapps目录下

 这里将webartifactId-1.0.0改为test(这里前目录名太多冗长),接着运行tomcat下的bin目录下中的startup.bat

 到这里部署工作完成,这里注意8080端口的占用,这里tomcat默认使用8080端口.

接着浏览器输入http://localhost:8080/test/index.jsp

 说明网站部署成功,点击超链接访问Serlvet

 Serlvet访问成功

8、web项目添加外部Java项目依赖

 这里以测试项目为例,现在本地Maven仓库中有一个testartifactid项目,其目录结构如下:

maven-repositorytestgroupidtestartifactid1.0.0testartifactid-1.0.0.jar

项目内容如下:testartifactid-1.0.0.jartestpackageab

 Computer.class就是要测试的目标类

注:如果不知道如何通过Maven生成Java项目包,参考Maven 基本操作

接下去就在web项目中添加依赖项和相关配置,修改pom.xml如下:

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>webgroupid.g</groupId>
  <artifactId>webartifactId</artifactId>
  <version>1.0.0</version>
  <packaging>war</packaging>

  <name>webartifactId Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>testgroupid</groupId>
    <artifactId>testartifactid</artifactId>
    <version>1.0.0</version>
</dependency>
  </dependencies>
</project>

这里注意testgroupid和junit的依赖,记者构建测试项目,构建如下目录srctestjavawebpackagew

webpackagew是创建web项目时指定的包路径,接着创建测试类,代码如下:

代码语言:javascript复制
package webpackage.w;

import org.junit.Test;
import testpackage.a.b.Computer;

public class ComputerTest{

    @Test
    public void test1(){

        Computer computer = new Computer();

        int result = computer.add(1,2);

        org.junit.Assert.assertEquals(3, result);

    }

}

接着cmd进入pom.xml所在的目录,执行以下代码:

代码语言:javascript复制
mvn clean test

 这里说明web项目添加外部测试项目成功.

0 人点赞