Maven Web项目
1、Web项目创建 官方文档
cmd进入web项目工作空间,执行以下代码:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4
构建成功.实际目录结构如下:
project |-- pom.xml `-- src `-- main `-- webapp |-- WEB-INF | `-- web.xml `-- index.jsp
这里注意和java项目的几个区别:没有test项目、没有在主项目源码下面建立指定的包结构层次.
2、pom.xml
生成的xml内容如下:
<?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目录
\main\java\webpackage\w,在此目录下新增TestServlet.java类,代码如下:
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,代码如下:
<!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的代码
<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,添加依赖
<?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所在的目录执行以下代码:
mvn compile
构建成功,这里去阿里云maven仓库下载了javax.servlet-api-4.0.1.jar包.
6、打包编译成功的web项目
cmd进入pom.xml所在的目录执行以下代码:
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-repository\testgroupid\testartifactid\1.0.0\testartifactid-1.0.0.jar
项目内容如下:testartifactid-1.0.0.jar\testpackage\a\b
Computer.class就是要测试的目标类
注:如果不知道如何通过Maven生成Java项目包,参考Maven 基本操作
接下去就在web项目中添加依赖项和相关配置,修改pom.xml如下:
<?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的依赖,记者构建测试项目,构建如下目录\src\test\java\webpackage\w
\webpackage\w是创建web项目时指定的包路径,接着创建测试类,代码如下:
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所在的目录,执行以下代码:
mvn clean test
这里说明web项目添加外部测试项目成功.