• Maven工程开发


    目录

    一、Maven工程开发_构建Maven工程

    二、Maven工程开发_pom文件配置

    三、Maven工程开发_编写代码

    四、Maven工程开发_依赖范围


    一、Maven工程开发_构建Maven工程

    接下来我们构建一个Maven的Web工程:

    打开 idea,选择创建一个新工程 

     

    选择Maven工程,并使用maven的web工程模板

     

    点击 Next 填写项目信息(所谓的公司名其实就是前两个包的包名)

    点击 Next,此处不做改动,点击Finish构建项目

     

    手动添加src/main/java目录,此时该目录还不能写Java代码。

    将src/main/java目录设置为Java代码目录。

    二、Maven工程开发_pom文件配置

    pom文件最上方是项目基本信息:

     

    groupId

    groupId一般定义项目组名,命名规则使用反向域名。例如com.itbaizhan

    artifactId

    artifactId一般定义项目名,命名使用小写字母。项目发布后,它的坐标是groupId+artifactId。

    version

    version定义版本号。版本号一般有三段,第一段:革命性的产品升级。第二段:新功能版本。第三段:修正一些bug。

    packaging

    packaging定义打包方式。

    中定义一些配置信息:

     

    中定义依赖的jar包坐标:

    由于项目是web项目,需要写Servlet和JSP,所以需要引入Servlet和JSP的依赖。查找依赖坐标的网站:https://mvnrepository.com/

     

      

        junit

        junit

        4.11

        test

      

      

      

        javax.servlet.jsp

    jsp-api

        2.2

      

      

      

        javax.servlet

        javax.servlet-api

        3.0.1

      

    为什么之前的web项目中没有引入jsp和servlet的jar包?

    因为之前项目中使用的是tomcat中的jsp和servlet中的jar包,在项目中没有引入。

    中定义第三方插件:

    web项目依赖tomcat运行,所以添加tomcat7插件

      

      

        org.apache.tomcat.maven

        tomcat7-maven-plugin

        2.1

        

          8080

          /

          UTF-8

          tomcat7

        

      

    三、Maven工程开发_编写代码

    接下来编写Servlet和Jsp代码:

    @WebServlet("/demo1")

    public class MyServlet extends HttpServlet {

      @Override

      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.getRequestDispatcher("hello.jsp").forward(req,resp);

       }

    }

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

      

        测试

      

      

        

    你好,大学牲!

      

    运行项目,按照如图步骤,配置使用maven中的tomcat7插件运行项目:

     

     点击OK后配置完成,点击Idea的运行符号即可使用maven中的tomcat7插件运行项目。

    Maven使用tomcat7运行项目的命令为:tomcat7:run

    四、Maven工程开发_依赖范围

    访问servlet后,发现报500异常,这是为什么呢?

     

    这是由于项目中引入了Servlet和Jsp的jar包,而在项目运行时,Tomcat要使用它自带的Servlet和Jsp的jar包,这样就造成了jar包冲突。但如果项目不引入Servlet和Jsp的jar包,则根本无法通过编译。

    此时可以设置依赖的作用范围解决该问题,设置Servlet和Jsp的jar包只在编译期起作用,运行时不起作用,这样不仅可以通过编译,还能在运行时避免jar包冲突。

    通过在中添加,可以设置依赖的作用范围,有以下取值:

    compile

    默认范围。表示该依赖在编译和运行时生效,项目打包时也会将该依赖打包进去。

    provided

    使用此依赖范围的Maven依赖,编译和测试时有效,但在运行时无效。典型的例子是servlet-api,在运行时Web容器已经提供依赖,就不需要Maven重复地引入一遍。

    runtime

    runtime范围表明编译时不需要生效,而只在运行时生效。典型的例子是JDBC驱动包,编译时只需要JDK的JDBC接口即可,只有运行项目时才需要具体的JDBC驱动。

    test

    test范围表明使用此依赖范围的依赖,只在编译和运行测试代码的时生效,程序的正常运行不需要此类依赖。典型的例子就是JUnit,它只有在编译测试代码及运行测试的时候才需要。

    system

    如果有些你依赖的jar包没有Maven坐标的,它完全不在Maven体系中,这时候你可以把它下载到本地硬盘,然后通过system来引用。(不推荐使用)

    • 所以对于Servlet和Jsp依赖,我们添加依赖范围为provided即可。

      javax.servlet.jsp

      jsp-api

      2.2

      provided

      javax.servlet

      javax.servlet-api

      3.0.1

      provided>

    重启项目,即可正常访问Servlet和Jsp。

    所以,你们学废了吗?

     分享一下我最喜欢的星空图!!!

  • 相关阅读:
    『现学现忘』Git基础 — 1、版本控制系统介绍
    深入理解 Python 中的 zip 函数
    WebGL前言——WebGL相关介绍
    zmq封装
    基于Django的博客系统之增加类别导航栏(六)
    ElasticSearch 升级指导
    Reinforcement Learning(二)--on-policy和off-policy
    wayland 概述
    jenkins利用插件Active Choices Plug-in达到联动显示或隐藏参数,且参数值可修改
    阶段性工作总结
  • 原文地址:https://blog.csdn.net/qq_53317005/article/details/127848003