文章目录

  • ​​一. 概述​​
  • ​​1. 为什么要学这个技术?​​
  • ​​2. maven的自动化构建​​
  • ​​3. Maven项目架构管理工具​​
  • ​​4. 下载安装Maven​​
  • ​​5. 配置环境变量​​
  • ​​6. 配置阿里云镜像​​
  • ​​7. 建立本地仓库​​
  • ​​7.1 什么是maven仓库​​
  • ​​7.1 maven仓库的分类​​
  • ​​8. Maven常用命令​​
  • ​​8.1 原型命令​​
  • ​​8.2 编译命令​​
  • ​​8.3 清理命令​​
  • ​​8.4 测试命令​​
  • ​​8.5 打包命令​​
  • ​​8.6 安装命令​​
  • ​​二. 在IDEA中使用Maven​​
  • ​​1. 创建一个Maven web项目教程​​
  • ​​2. 创建一个普通的java项目​​
  • ​​3. maven的依赖坐标​​
  • ​​4. pom文件​​
  • ​​4. IDEA中使用Maven​​
  • ​​5. IDEA生成目录树​​
  • ​​三. 在IDEA中配置Tomcat​​
  • ​​1. 配置方式​​
  • ​​2. 常见问题​​
  • ​​2.1 找不到相应的war包​​
  • ​​2.2 maven默认的web项目中的web.xml版本问题​​
  • ​​四. Maven仓库的使用​​

一. 概述

概念:

  • Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。

核心构成:

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

1. 为什么要学这个技术?

  • 在javaweb开发中,需要使用大量的jar包,我们手动去导入;
  • 如何能够让一个东西自动帮我导入和配置这个jar包
  • 由此Maven诞生了
  1. jar依赖的引入:之前拷贝jar包的操作,随着项目增多,磁盘里面jar包会增加,这样会占用越来越多磁盘空间。Maven里面我们使用坐标来引入jar依赖。(依赖就是我们之前说的jar包)
  2. jar依赖的获取:之前下载jar包,我们通常是登录官网去下载。这样的操作比较麻烦。Maven提供了依赖仓库。
  3. jar依赖的传递:当前项目引入其他项目的时候,可以将引入项目里面的jar直接使用。
  4. 项目的模块化管理:maven提供了原型模块化操作。内置一些项目模板,我们使用命令来创建项目结构。

2. maven的自动化构建

概念:

  • 构建就是以我们编写的 Java 代码、框架配置文件、国际化等其他资源文件、JSP 页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。

构建过程的几个主要环节:

  • ①清理:删除以前的编译结果,为重新编译做好准备。(删除.class文件)
  • ②编译:将 Java 源程序编译为字节码文件。(.java文件转换成.class文件)
  • ③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性 (代码编写完成之后对功能代码的测试运行)
  • ④报告:在每一次测试后以标准的格式记录和展示测试结果 (测试报告:代码的Bug 及其他的说明)
  • ⑤打包:将工程封装为一个压缩文件,Java工程对应jar 包,Web工程对应 war包. (开发完成之后将项目代码统一压缩成一个包,最终需要部署到服务器上使用)
  • ⑥安装:将打包的结果jar 包或 war 包安装到本地仓库中。
  • ⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行

Maven把以上的操作整合到一起,实现了机械化的构建,也就是我们说的自动化构建。

3. Maven项目架构管理工具

我们目前用来就是方便导入jar包的

Maven核心思想:约定大于配置

  • 有约束,不要去违反

Maven会规定好你该如何去编写我们的java代码,必须按照这个规范

4. 下载安装Maven

​官网下载https://maven.apache.org/​

Maven项目架构管理工具_jar


下载完之后,解压即可;

Maven项目架构管理工具_maven_02

5. 配置环境变量

Maven项目架构管理工具_jar_03


Maven项目架构管理工具_maven_04


Maven项目架构管理工具_jar_05


测试Maven是否配置完毕

Maven项目架构管理工具_maven_06

6. 配置阿里云镜像

镜像:mirrors

  • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

7. 建立本地仓库

7.1 什么是maven仓库

在 Maven 的术语中,仓库是一个位置(place)。Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
通俗的理解就是存放jar包的地方。

7.1 maven仓库的分类

在本地的仓库,对应还有一个远程仓库

1、本地仓库:本地磁盘仓库

  • ①系统默认的:C:\Users\admin.m2
  • ②自定义仓库:根据自己的设置(推荐使用)

2、远程仓库:

  • 中央仓库:服务器在国外,所有的资源都可以找到。访问比较慢
    ​​​https://mvnrepository.com/​
  • 镜像仓库:国内的一些企业将中央仓库的资源下载到国内。比较常见的:阿里云(推荐)、华为云、腾讯云
  • 私服仓库:企业内部搭建的局域网服务器

自己建立一个本地仓库:maven-repo

Maven项目架构管理工具_jar包_07


Maven项目架构管理工具_jsp_08


Maven项目架构管理工具_jar包_09

8. Maven常用命令

IDEA中自带了

Maven项目架构管理工具_jar包_10

8.1 原型命令

  1. 项目原型命令:使用命令一键生成项目
    语法:mvn archetype:generate
    使用命令生成的项目,直接可以使用eclipse或idea等开发工具打开。

Maven项目架构管理工具_jar_11


Maven项目架构管理工具_jar包_12


注意:你在哪个盘位置进行此命令,就会在该盘位置创建项目

8.2 编译命令

  • 语法:mvn compile
  • 作用:将项目进行编译,将主程序java文件转换成class文件,maven项目中会生成一个target目录
  • 注意事项:执行命令需要先进入到之前创建好的项目目录下

8.3 清理命令

语法:mvn clean

作用:将项目的编译后的文件删除,也就是将maven项目下的taget目录删除,目的是为了再次编译的进行。

8.4 测试命令

语法:mvn test

作用:运行项目中的测试文件代码,对功能进行测试

说明:
执行测试命令之前先执行了编译命令:将主程序文件和测试文件都进行了编译

8.5 打包命令

语法:mvn package

作用:将maven项目打包成jar或者war.普通的java项目打包成jar,web项目名打包成war。

说明:

  1. 执行打包命令之前会执行编译命令和测试命令
  2. 会在target目录下生成jar或者war包:默认生成jar规范的包(项目名+版本号.jar),war包(项目名称.war)

8.6 安装命令

语法:mvn install

作用:将项目安装到本地仓库,可以提供给其他项目使用

说明:

  1. 执行安装命令之前执行了编译命令和测试命令以及打包命令
  2. 本地仓库中会生成一个当前项目的jar包或war

二. 在IDEA中使用Maven

1. 创建一个Maven web项目教程

创建一个Maven web项目,使用模板尝试一下

Maven项目架构管理工具_maven_13


Maven的GAV

Maven项目架构管理工具_jar包_14


Maven项目架构管理工具_jar包_15


Maven项目架构管理工具_jar_16


maven地址也有自带的,但是比较少的模板

Maven项目架构管理工具_jsp_17

等待项目导入,初始化完毕

Maven项目架构管理工具_jar包_18


Maven项目架构管理工具_maven_19


观察maven仓库中多了什么东西?

Maven项目架构管理工具_jsp_20


IDEA中Maven设置

  • IDEA项目创建成功后,看一眼Maven的配置

    到这里,Maven在IDEA中的配置和使用就OK了

web maven的标准目录结构

Maven项目架构管理工具_maven_21

  • 标准目录结构中,如果缺少某个目录,我们可以自己手动创建选择

2. 创建一个普通的java项目

Maven项目架构管理工具_jsp_22


Maven项目架构管理工具_jar包_23


Maven项目架构管理工具_maven_24

Maven项目架构管理工具_jsp_25


Maven项目架构管理工具_jsp_26

在这里可以手动添加项目依赖,然后maven会自动导入jar包

<dependencies>
<!--具体依赖的jar包配置文件-->
<!-- maven的高级之处在于,它会帮你导入这个jar包所依赖的其他jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>

3. maven的依赖坐标

几何中坐标:x y z 表示一个元素在空间中的位置
Maven坐标:groupId artifactId version通过这三个参数确定一个唯一的依赖。

  • 确定项目在本地仓库的位置:查找本地仓库中安装后的jar或者war包
  • 确定引入的依赖jar包:jdbc dbutisl
    项目中引入依赖方式:通过坐标形式引入依赖,也就是我们之前的jar的引入。
<depedency>
<groupId>junit<groupId>
<artifactId>junit<aetifactId>
<version>3.8.1<version>
</depedency>
  • 获取依赖的坐标的方式:maven中央仓库获取
    ​ https://mvnrepository.com/​​

4. pom文件

pom.xml是maven的核心配置文件

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

POM 中可以指定以下配置:

  • a.项目依赖
  • b.插件
  • c.执行目标
  • d.项目构建 profile
  • e.项目版本
  • f.项目开发者列表
  • g.相关邮件列表信息
<?xml version="1.0" encoding="UTF-8"?>

<!--maven的版本和头文件-->
<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.0</modelVersion>

<!--这里是我们刚刚配置的GAV,当前项目的坐标-->
<groupId>com.pudding</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>

<!--
项目的打包方式
jar:java应用(默认方式)
war:javaweb应用
-->
<packaging>war</packaging>


<!--配置-->
<properties>
<!--项目的默认构建编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--编译版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>


<!--依赖管理系统:管理jar包-->
<!--项目依赖-->
<dependencies>
<!--具体依赖的jar包配置文件-->
<!-- maven的高级之处在于,它会帮你导入这个jar包所依赖的其他jar包-->
<!--一个jar包对应一个依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>

<!--项目构建用的东西-->
<build>
...
</build>
</project>

maven由于他的约定大于配置,我们之后可能遇到我们写的配置文件,无法被导出或者生效的问题

解决方案:在bulid中配置resource,来防止我们资源导出失败的问题

当有些依赖报红的话:那么我们可以通过刷新maven重写下载jar依赖

4. IDEA中使用Maven

Maven项目架构管理工具_jar_27


这个只有在Web应用下才会有在IDEA中标记文件夹功能

Maven项目架构管理工具_jar_28


或者使用如下方式

Maven项目架构管理工具_jsp_29


选中当前项目

Maven项目架构管理工具_maven_30

5. IDEA生成目录树

Maven项目架构管理工具_jsp_31

三. 在IDEA中配置Tomcat

1. 配置方式

方式一:

先创建一个maven web项目

Maven项目架构管理工具_maven_32


和普通的web项目一样。配置本地的tomcat服务器即可

Maven项目架构管理工具_jar包_33


Maven项目架构管理工具_jsp_34


local表示本地服务器

remote表示远程的tomcat服务器

Maven项目架构管理工具_jar包_35


Maven项目架构管理工具_maven_36


警告:没有一个人工的配置解决警告问题

为什么会有这个问题:我们访问一个网站,需要指定一个文件夹的名字;

Maven项目架构管理工具_jsp_37


Maven项目架构管理工具_maven_38


然后启动tomcat

Maven项目架构管理工具_jar包_39


Maven项目架构管理工具_maven_40

第二种方式:maven中配置tomcat插件:pom.xml中设置插件

Maven项目架构管理工具_maven_41


Maven项目架构管理工具_jar_42

Maven项目架构管理工具_jar包_43

2. 常见问题

2.1 找不到相应的war包

注意:使用maven3.6.3的时候,会有一些问题

Maven项目架构管理工具_maven_44

2.2 maven默认的web项目中的web.xml版本问题

Maven项目架构管理工具_jar包_45


这个生成的版本比较老,我们应该参考tomcat中webapps下的默认的ROOT项目中的WEB-INF里面的web.xml文件中的dtd。

Maven项目架构管理工具_jsp_46

四. Maven仓库的使用

​Maven仓库https://mvnrepository.com/​​进行查找下载对应的dependencies

Maven项目架构管理工具_jsp_47


然后使用,如果爆红的话,就alt+enter然后添加到maven