• 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
    
    • 1
    • 2

    第一步: 在工作空间的根目录下运行生成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: :【直接回车,表示确认】
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    第二步:配置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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    Web工程的目录结构

    在这里插入图片描述

    将Web工程中部署到服务器

    创建Servlet

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

    在这里插入图片描述

    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");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    第二步: 在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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    <html>
        <body>
            <h2>Hello World!h2>
            <a href="helloServlet">Access Servleta>
        body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    执行Maven的构建命令

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

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

    在这里插入图片描述

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

    在这里插入图片描述

    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>3.1.0version>
        <scope>providedscope>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

    在这里插入图片描述

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    编写测试程序: 根据主体程序所在的包结构创建对应的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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    执行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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以树形结构查看当前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
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    敏捷开发工具:提升软件研发效率的重要利器
    【Mysql】表的约束
    【MySQL系列】- MySQL自动备份详解
    解读省钱兄情侣飞行棋小程序系统的魅力所在
    优品汇系统开发机制介绍
    [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
    【Python&RS】基于GDAL修改栅格数据的DN值
    【深度学习】数学基础
    各种级数(调和、几何)总结
    轻松上手Jackjson(珍藏版)
  • 原文地址:https://blog.csdn.net/qq_57005976/article/details/133797386