Maven工程开发

目录

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

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

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

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


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

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

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

Maven工程开发_第1张图片 

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

Maven工程开发_第2张图片 

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

Maven工程开发_第3张图片

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

Maven工程开发_第4张图片 

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

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

Maven工程开发_第5张图片

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

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

Maven工程开发_第6张图片

 

groupId

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

artifactId

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

version

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

packaging

packaging定义打包方式。

中定义一些配置信息:

Maven工程开发_第7张图片

 

中定义依赖的jar包坐标:

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

Maven工程开发_第8张图片

 

  

    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插件运行项目:

Maven工程开发_第9张图片

 Maven工程开发_第10张图片

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

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

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

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

Maven工程开发_第11张图片

 

这是由于项目中引入了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。

所以,你们学废了吗?

Maven工程开发_第12张图片

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

你可能感兴趣的:(ssm框架,maven,java,开发语言)