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項目添加外部測試項目成功.