04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤

创建Maven版的Web工程

使用命令生成Web工程

使用mvn archetype:generate命令生成Web工程时,需要使用一个专门生成Web工程骨架的archetype(参照官网看到它的用法)

  • -D表示后面要附加命令的参数,字母D和后面的参数是紧挨着的,中间没有任何其它字符
  • 参数archetypeGroupId、archetypeArtifactId、archetypeVersion用来指定现在使用的maven-archetype-webapp的坐标
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp 
					   -DarchetypeVersion=1.4

第一步: 在工作空间的根目录下运行生成Web工程的命令然后按照提示执行, 不能在一个Java工程下再创建一个Web工程

Define value for property 'groupId': com.atguigu.maven 
Define value for property 'artifactId': pro02-maven-web 
Define value for property 'version' 1.0-SNAPSHOT: :【直接回车,使用默认值】
Define value for property 'package' com.atguigu.maven: :【直接回车,使用默认值】 
Confirm properties configuration: 
groupId: com.atguigu.maven 
artifactId: pro02-maven-web 
version: 1.0-SNAPSHOT 
package: com.atguigu.maven 
Y: :【直接回车,表示确认】

第二步:配置Maven工程生成的pom.xml文件,对创建好的Web工程做一点调整



<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.0modelVersion>
    
    
    <groupId>com.atguigu.mavengroupId>
    <artifactId>pro02-maven-webartifactId>
    <version>1.0-SNAPSHOTversion>
	<packaging>warpackaging>
	
    
    <name>pro02-maven-webname>
    <url>http://www.example.comurl>

    <properties>
        
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>
    
project>

Web工程的目录结构

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤_第1张图片

将Web工程中部署到服务器

创建Servlet

第一步: 在main目录下创建java目录,在java目录下创建Servlet类所在的包的目录

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤_第2张图片

package com.atguigu.maven;
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 HelloServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().write("hello maven web");
	}
}

第二步: 在web.xml中注册Servlet

<servlet>
    <servlet-name>helloServletservlet-name>
    <servlet-class>com.atguigu.maven.HelloServletservlet-class>
servlet>
<servlet-mapping>
    <servlet-name>helloServletservlet-name>
    <url-pattern>/helloServleturl-pattern>
servlet-mapping>

第三步: 在index.jsp页面中编写超链接

<html>
    <body>
        <h2>Hello World!h2>
        <a href="helloServlet">Access Servleta>
    body>
html>

执行Maven的构建命令

此时直接执行mvn compile命令提示错误信息,程序包javax.servlet.http和javax.servlet不存在

  • 因为我们的Web工程用到的HttpServlet这个类属于servlet-api.jar ,所以Web工程需要导入servlet-api.jar的坐标信息

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤_第3张图片

配置Web工程对servlet-api.jar包的依赖: 依赖的坐标可以根据关键词到Maven仓库查询,根据下载量选择适合的使用

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤_第4张图片


<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>3.1.0version>
    <scope>providedscope>
dependency>

第一步: 运行mvn package命令将Web工程打包为war包(默认存放在target目录下),将war包复制到Tomcat/webapps目录下即部署到Tomcat上运行

第二步: 执行startup.bat文件启动Tomcat服务器, 通过浏览器尝试访问http://localhost:8080/pro02-maven-web/index.jsp

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤_第5张图片

Web工程依赖自定义的Java工程

Web工程依赖的每一个jar包对应的就是每一个Java工程,最终这些jar包会被放在Web工程的WEB-INF/lib目录下

pro02-maven-web工程的pom.xml文件中的dependencies标签内指定被依赖的Java工程pro01-maven-java的坐标

  • 只有Web工程依赖Java工程,没有反过来Java工程依赖Web工程

<dependency>
	<groupId>com.atguigu.mavengroupId>
	<artifactId>pro01-maven-javaartifactId>
	<version>1.0-SNAPSHOTversion>
    <scope>compilescope>
dependency>

编写测试程序: 根据主体程序所在的包结构创建对应的test目录pro02-maven-web\src\test\java\com\atguigu\maven,把Java工程的CalculatorTest.java测试类复制到该目录下


<dependencies>
    
    <dependency>
        
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        
        <version>4.12version> 
        
        <scope>testscope>
    dependency>
<dependencies>

执行Maven的构建命令

测试命令 mvn test: 调用测试类的测试方法, 测试操作中会提前自动执行编译操作,测试成功就说明编译也是成功的

打包命令mvn package: 在打包好的war包中,被Web工程依赖的Java工程会变成Web工程的WEB-INF/lib目录下的jar包

以列表形式查看当前Web工程所依赖的jar包信息: mvn dependency:list

# jar包的显示格式-->groupId:artifactId:打包方式:version:依赖的范围
> [INFO] The following files have been resolved:
> [INFO] org.hamcrest:hamcrest-core:jar:1.3:test
> [INFO] javax.servlet:javax.servlet-api:jar:3.1.0:provided
> [INFO] com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile
> [INFO] junit:junit:jar:4.12:test

以树形结构查看当前Web工程依赖的jar包信息: mvn dependency:tree

  • 由于依赖的传递性, 在pom.xml中虽然没有依赖hamcrest-core,但是它却被加入了我们依赖的列表, 原因是junit依赖了hamcrest-core
[INFO] com.atguigu.maven:pro02-maven-web:war:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:4.12:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] \- com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile

你可能感兴趣的:(Maven,maven,前端,服务器,java,tomcat)