Java第四十三天,Maven基础篇(一),走进Maven 一、概念 二、功能 三、Maven 的安装 四、Maven 仓库的种类及其关系 五、Maven标准目录结构 六、Maven常用命令 七、Maven生命周期 八、Maven概念模型

Maven,专家,内核;是一个项目管理工具;它包含了以下内容:

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

二、功能

1.统一管理项目用到的 依赖jar包,防止版本冲突

Maven 会把所有项目的 依赖 jar 包统一放在一个叫做 jar包仓库 的地方;任何项目需要用到 jar包 时,都需要通过 jar包坐标  引入依赖jar包

Java第四十三天,Maven基础篇(一),走进Maven
一、概念
二、功能
三、Maven 的安装
四、Maven 仓库的种类及其关系
五、Maven标准目录结构
六、Maven常用命令
七、Maven生命周期
八、Maven概念模型

2.将 java文件 自动编译成 二进制字节码文件,减少人工压力

3.统一管理单元测试,一次性测试需要验证的代码

4.将项目打包,生成报表,部署项目

三、Maven 的安装

1.官网下载安装包

http://maven.apache.org/download.cgi

Java第四十三天,Maven基础篇(一),走进Maven
一、概念
二、功能
三、Maven 的安装
四、Maven 仓库的种类及其关系
五、Maven标准目录结构
六、Maven常用命令
七、Maven生命周期
八、Maven概念模型

2.解压压缩包到指定目录(无中文、无空格的路径)

3.配置环境变量

注意:

MAVEN_HOME 是新建,Path 是编辑新增子级条目

  • MAVEN_HOME ===> Maven 的解压目录
  • Path ===> %MAVEN_HOME%in

4.测试是否安装成功

1.进入 cmd 命令框

2.运行 mvn -v 命令

5.目录结构

  • bin ===> 可执行文件存放目录;其中的 Mvn.cmd 主要用来构建项目
  • boot ===> Maven 自身运行所需要的类加载器
  • conf ===> 配置文件存放目录,settings.xml 是 Mavn 项目需要用到的配置文件
  • lib ===> Maven 自身运行所依赖的 jar 包

四、Maven 仓库的种类及其关系

1.Maven 仓库的位置

由 apache-maven-3.6.3confsetting.xml 文件指定,如下:

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
-->


配置文件指明 Maven 仓库的默认位置为 ${user.home}/.m2/repository;如果需要,可以使用如下标签自定义本地仓库的位置
<localRepository>本地仓库的位置</localRepository>

2.仓库的种类

  • 本地仓库 ===> 本机从远程仓库下载的 jar包 形成的jar包仓库
  • 远程仓库(私服) ===> 公司为了自身需求,自己搭建的 Maven 仓库
  • 中央仓库 ===> 需要联网获取;是 Maven 官网提供的所有开源的 jar包 仓库

3.本地仓库与远程仓库的关系

(1)概述

本地的所有项目第一次用到 Jar 包时,都会通过 maven 软件从远程仓库或中央仓库(因为第一次使用本地仓库是肯定没有已经下载好的依赖包的)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了

(2)顺序

在默认请求下,启动一个 Maven 工程,会首先从 本地仓库 找jar依赖包;

若本地仓库没有,且所在公司有私服,则再次通过私服寻找 jar依赖包,若私服也没有,最后从中央仓库寻找 jar依赖包;

若本地仓库没有,且所在公司没有私服,则直接从中央仓库寻找 jar 依赖包

(3)图解

Java第四十三天,Maven基础篇(一),走进Maven
一、概念
二、功能
三、Maven 的安装
四、Maven 仓库的种类及其关系
五、Maven标准目录结构
六、Maven常用命令
七、Maven生命周期
八、Maven概念模型

(4)读者福利

笔者有一个本地仓库,里面放了一些常用的 jar依赖包,这里就当作礼品送给大家了

https://download.****.net/download/ITlanyue/12727820

五、Maven标准目录结构

  • src/main/java ===> 核心代码部分
  • src/main/resources ===>配置文件部分
  • src/main/webapp ===> web资源;如页面资源、js、css、图片资源 ......
  • src/test/java ===> 测试代码部分
  • src/test/resources ===> 测试配置文件部分
  • target —— 项目输出位置,编译后的 class 文件会输出到此目录
  • pom.xml——maven 项目核心配置文件

注意:如果是普通的 java 项目,那么就没有 webapp 目录,只有 web 项目才会有

六、Maven常用命令

  • mvn clean ===> 清除项目编译产生的数据;删除 target 目录,导入项目时需要用到(每个人电脑的开发环境不一定相同)
  • mvn compile ===> 将项目中 src/main/java 目录下面的Java代码进行编译,生成 target 目录,并且生成相关核心代码的字节码文件
  • mvn test ===> 完成 mvn compile 功能后,又将项目中 src/test/java 目录下面的Java代码进行编译,生成 target 目录,并且生成测试代码的相关字节码文件
  • mvn package ===> 打包;完成 mvn compile 和 mvn test 功能后,根据项目中 pom.xml 配置文件的 <packaging/>标签,将项目打包成相应的格式
  • mvn install ===> 安装;完成 mvn compile 和 mvn test 和 mvn package 功能后,又将打包后的包安装到了本地仓库
  • mvn deploy ===> 发布;需要进行额外的配置后,才可以执行该命令

七、Maven生命周期

maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

  • Clean Lifecycle ===> 清理生命周期;在进行真正的构建之前进行一些清理工作
  • Default Lifecycle ===> 默认生命周期;构建的核心部分,编译,测试,打包,部署等等
  • Site Lifecycle ===> 站点生命周期;生成项目报告,站点,发布站点

八、Maven概念模型

Java第四十三天,Maven基础篇(一),走进Maven
一、概念
二、功能
三、Maven 的安装
四、Maven 仓库的种类及其关系
五、Maven标准目录结构
六、Maven常用命令
七、Maven生命周期
八、Maven概念模型

1.项目对象模型 (Project Object Model)

一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、项目运行环境信息、插件目标等

2.依赖管理系统(Dependency Management System)

通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理

<!-- 依赖关系 -->
<dependencies>
    <dependency>
        <!--项目名称 -->
        <groupId>项目名称</groupId>
        <!--模块名称 -->
        <artifactId>项目中的模块名称</artifactId>
        <!-- 版本 -->
        <version>版本号</version>
        <!-- 依赖范围:单元测试 -->
        <scope>test</scope>
    </dependency

    ......
</dependencies>

3.一个项目生命周期(Project Lifecycle)

使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程, maven 将这些过程规范为一个生命周期,maven 通过执行一些简单命令即可实现上边生命周期的各各过程,比如执行 mvn compile 执行编译、执行 mvn clean 执行清理......

生命周期的各阶段:

Java第四十三天,Maven基础篇(一),走进Maven
一、概念
二、功能
三、Maven 的安装
四、Maven 仓库的种类及其关系
五、Maven标准目录结构
六、Maven常用命令
七、Maven生命周期
八、Maven概念模型

4.一组标准集合

maven 将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等

5.插件(plugin)目标(goal)

maven 管理项目生命周期过程都是基于插件完成的;每一次构建项目,Maven 底层都会有一个插件在工作,每一个构建项目的命令都对应着 Maven 底层的一个插件