JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx

目录

1 Maven概述

1.1 Maven的基本概念

1.2 Maven的安装

1.3 Maven仓库种类和彼此关系

1.4 Maven标准目录机构

2 Maven常用命令

3 Maven生命周期

4 Maven概念模型

5 创建Maven工程

5.1 IDEA集成Maven插件

5.2 使用IDEA创建Maven的Java工程

5.3 使用IDEA创建Maven的Web工程


1 Maven概述

1.1 Maven的基本概念

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

上述关于Maven的概念看起来晦涩难懂,那么Maven到底能帮助我们做什么呢?

  • 1)大项目涉及的jar包手动导入存在的jar包冲突,版本冲突问题;
  • 2)将Java文件编译成二进制字节码文件;
  • 3)可以将指定目录下的单元测试一下全部完成,且指示哪里OK,哪里有问题;
  • 4)项目打包方便;

总之,Maven可以把你从一些繁琐工作中解放出来,能帮你构建工程,管理 jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点。

其中,Maven的最经典的作用包括:

1)依赖管理,就是Maven工程对jar包的管理,传统项目中直接将jar包放在项目中,而Maven工程真正的jar包是放在jar包仓库中,项目中存在的是jar包的坐标,当编译时是通过坐标去仓库中寻找jar包的。所以,使用Maven的项目文件大小要比传统的项目文件大小小的多。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第1张图片

2)一键构建,即不再使用本地安装的Tomcat,而是使用Maven集成的Tomcat插件完成,使用Maven的规范化流程如下:

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第2张图片

若使用前者,我们需要先把整个项目打包,放在Tomcat目录下的webapp文件夹下,然后在bin目录下找到startup命令双击运行,使用Maven的话就简单的多了,一键完成:cmd命令进入到项目目录下,再mvn tomcat:run 即可。

1.2 Maven的安装

安装步骤:

  • 1)官网下载安装包:http://archive.apache.org/dist/maven/maven-3/
  • 2)下载的安装包解压在一个没有中文、没有空格的路径下即可;
  • 3)配置环境变量:
    ----在系统变量中新建一个MAVEN_HOME,变量值为解压后的文件目录:自己的文件目录\apache-maven-3.5.2
    ----在系统变量中找到Path,新增变量值%MAVEN_HOME%\bin;
    ----因为Maven运行依赖于Java环境,所以需要确保环境变量中有JAVA_HOME,变量值为JDK的目录;
  • 4)检验Maven是否按照OK,cmd中输入mvn -v:
    JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第3张图片

解压后的Maven文件目录如下:

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第4张图片

1.3 Maven仓库种类和彼此关系

仓库种类包括:本地仓库、中心仓库、远程仓库(私服)。

  • 1)本地仓库:打开Maven-conf目录下的settings.xml,可以看到localRepository的注解:Default: ${user.home}/.m2/repository,即Maven本地仓库的默认位置是系统盘下的路径;
  • 2)中央仓库:启动Maven工程时,先通过jar包坐标在本地仓库寻找jar包,若本地没有,在联网的情况下会去中央仓库下载,未联网的情况下因找不到jar包会报错。中央仓库放置了几乎所有的开源jar包;
  • 3)远程仓库:实际企业项目开发时,为了方便管理,且未联网的情况下也正常开发,会创建一个远程仓库,别名为私服。公司可以通过局域网从远程仓库获取jar包。远程仓库的jar包可以是本地上传的,也可以是从中央仓库下载的。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第5张图片

【注意】:一般在本地电脑,我们通常会把本地仓库默认指定的路径(在C盘)修改到其他盘中,避免占用系统盘大量空间且维护方便,修改方法:settings.xml文件中,  本地仓库的路径

1.4 Maven标准目录机构

一般情况下,我们项目中代码包括几部分:

  • 核心代码部分;
  • 配置文件部分;
  • 测试代码部分;
  • 测试配置文件;

对于传统项目,针对以上四部分可能会放在不同的包中,但是不同的程序员命名规则就会不一样,所以Maven统一了这个规范:

  • src/main/java目录:核心代码部分;
  • src/main/resources:配置文件部分;
  • src/test/hava目录:测试代码部分;
  • src/test/resources:测试配置文件。
  • src/main/webapp:页面资源,包含js、css、图片等。

2 Maven常用命令

以一个简单的项目为例说明,进入到项目路径下,打开cmd

1)mvn clean:删除编译文件target,在接收一个已经开发了的项目A时,首先要clean一下,因为每个人的开发环境不同,所以要删除掉原来的编译信息;

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第6张图片

2)mvn compile:编译src/main目录下的代码,结果放在target目录下;

3)mvn test:不仅编译src/main下代码,也编译src/test下的代码

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第7张图片

4)mvn package:不仅编译src/main下代码,也编译src/test下的代码,且打了war包

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第8张图片

5)mvn install:不仅编译src/main下代码,也编译src/test下的代码,且打了war包,此外,把当前项目的jar包存在了本地仓库。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第9张图片

3 Maven生命周期

Maven的一键构建是利用其集成的Tomcat插件进行的,构建步骤包括:编译->测试->打包->安装->发布,若接着其他人开发的项目,首先还要进行项目编译信息清除。由上一节讲到的5个命令可知,从前到后执行的范围是逐级包含的,实质上这就是生命周期,Maven有三套生命周期:

  • 清理生命周期;
  • 默认生命周期;
  • 站点生命周期(不常用)。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第10张图片

4 Maven概念模型

1)项目对象模型

对应着项目中的pom.xml文件,包含的信息有三类:

  • 项目自身的信息;
  • 项目运行依赖的jar包信息;
  • 项目运行环境信息,如jdk、tomcat等信息。

2)依赖管理模型

pom.xml中的项目运行依赖的jar包坐标,包含:

  • 公司组织的名称;
  • 项目名;
  • 版本号

3)构建生命周期

最常用的是默认生命周期:compile、test、package、install、deploy,每一个构建项目的命令对应着maven底层的一个插件。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第11张图片

5 创建Maven工程

5.1 IDEA集成Maven插件

IDEA集成Maven插件的步骤:

1)首先要保证电脑已经安装好了Maven;

2)在IDEA->Settings->Maven(可直接搜索)设置Maven的安装路径、配置文件路径、本地仓库路径:

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第12张图片

3)在IDEA->Settings->Maven(可直接搜索)->Runner,设置VM-Options,若使用Maven提供的好的骨架创建Maven工程时,需要联网,为了不联网情况下也可以成功创建,那么配置此参数,只要之前有联网下载过相关创建工程的插件,在本地寻找即可,参数为:-DarchetypeCatalog=internal

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第13张图片

5.2 使用IDEA创建Maven的Java工程

1)新建Maven工程,参数选择如下,quickstart为maven java工程 的一个骨架(模板),首次使用要联网下载的(这里若是新建工程后出现错误,基本是没有FQ,因为是从国外网站下载的);

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第14张图片

2)设置Maven的路径;

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第15张图片

3)补充目录结构(resources)

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第16张图片

【注意】:若不使用骨架,实际创建出的跟使用骨架的差不多,resources目录也直接有了,只是缺失java目录下,可以自己创建,我们使用maven创建java工程时可以不使用骨架。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第17张图片

5.3 使用IDEA创建Maven的Web工程

以新建一个Servlet为例,新手也可以按步骤搭建自己的环境的。

1)新建Maven工程,参数选择如下,相比于Java工程,只是骨架不同而已,后续步骤一样,不再赘述。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第18张图片

2)补充目录结构(src/main/java,右键Make Directory As Resource Root,高版本的IDEA右键直接可以选择新建java目录),在java目录下新建com.winter.servlet包

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第19张图片

3)在Project Structure-》Modules-》web-》Source Roots处勾选,否则会出现,New 时缺失Servlet等选项的问题。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第20张图片

4)在com.winter.servlet包下新建一个Servlet,新建后web.xml会出现error提示,需要自己补全mapping。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第21张图片

5)查看新建的Servlet,发现缺失Servlet包错误,因为是新建的工程,需要在pom.xml文件中导入jar包(标签),先删掉前面的路径,pom文件中导入后即可,此处导入了servlet、junit、jsp包

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第22张图片

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第23张图片

【注意】:若本地仓库没有对应的jar包,可以从maven中央仓库搜索,获取坐标后粘贴进pom文件

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第24张图片

6)完成Servlet代码,实现跳转至hello.jsp界面

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        request.getRequestDispatcher("/hello.jsp").forward(request,response);
    }
}

7)运行项目:mvn tomcat:run,如下操作

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第25张图片

【注意1】:访问网页时却出现如下问题,原因是什么呢?

【原因】:在项目编译的时候用的是我们导入的jar包,但在真正运行的时候是调用本地的tomcat里面的jar包,发生了冲突。

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第26张图片

【解决办法】:在pom.xml文件中,标签对应的jar包加作用域,近让其在编译的时候起作用,而项目运行的时候不起作用即可:provided

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第27张图片

【注意】:作用域的设置可以参照下表

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第28张图片

修改完后再次启动,访问时就正常了,记着自己写一个hello.jsp哦。

【注意2】:若启动服务器没问题,访问网页时出现这样的错误,可能是因为Maven默认的Tomcat版本太低了;

JavaWeb——Maven基础之详细总结,从零开始搭建Maven工程,包含一些常见的坑org.eclipse.jdt.internal.compiler.classfmt.ClassFormatEx_第29张图片

【解决办法】:pom.xml中添加插件配置为Tomcat7,再次启动时需要输入的指令为mvn tomcat7:run 即可解决。


    
        
            org.apache.tomcat.maven
            tomcat7-maven-plugin
            2.2
            
                8080 
                UTF-8
            
        
    

作于202008262000,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

你可能感兴趣的:(JavaWeb,Maven基础总结,Maven的常用命令,Maven生命周期,IDEA创建Maven工程步骤,FormatException)