本文介绍如何使用 Maven 创建一个Servlet
开发环境简介
$ java -version java version "14.0.1" 2020-04-14 ...
$ mvn --version Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) OS name: "mac os x", version: "10.14.5", arch: "x86_64", family: "mac" ...
我们的目标就是通过Maven将 HelloHooyes.java 编译成字节码 HelloHooyes.class
Maven 项目需要一个目录,假设我们创建的根目录名称为 hooyes ,目标的目录结构如下:
我们注意到,里面有两个核心文件,一个是 pom.xml ,另一个是 HelloHooyes.java ,值到注意的是目录的结构是严格的,pom.xml 必须在根目录下,HelloHooyes.java 必须在 src/main/java/ 目录下。
在根目录下 hooyes/ 里创建 pom.xml
<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>hooyes</groupId> <artifactId>hooyes</artifactId> <version>1.0-hooyes</version> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies> </project>
因为 servlet 需要实现 HttpServlet 接口,所以 dependency 中添加 javax.servlet 。Maven 将会在编译的时候,自动帮我们下载引入相关的jar包。
github上的 pom.xml
创建了这个文件之后,进入到 hooyes 目录执行 mvn clean 检测,看到 BUILD SUCCESS 即表示 pom.xml 的格式没有错误。
$ mvn clean ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.317 s [INFO] Finished at: 2020-05-04T21:29:46+08:00 ...
在 hooyes/src/main/java/ 创建这个文件
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloHooyes extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.getWriter().append("Hello Hooyes!"); } protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.getWriter().append("Welcome to https://hooyes.net/p/first-maven"); } }
github上的 HelloHooyes.java
在 hooyes 根目录,执行
$ mvn package
我们看到 [INFO] BUILD SUCCESS 即表示编译成功。
编译成功后,在 hooyes/ 目录下产生 target 目录。
hooyes/target/classes/ 目录中的 HelloHooyes.class 即是我们需要的目标文件。
编译好的 HelloHooyes.class 如何将它布署到 Web Server 中,我在前一篇文章中已写过,这里不再重复。
请参考 《最简单的第一个Servlet》 中的布署环节。
到此,我们已成功的完成第一个Maven 项目。
如果你遇到问题,可以在github上给我 提一个 issue .
https://hooyes.net/p/first-maven
https://hooyes.net/p/first-maven