Java第四十三天,Maven基础篇(一),走进Maven

一、概念

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

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

二、功能

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

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

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

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

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

三、Maven 的安装

1.官网下载安装包

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

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)图解

(4)读者福利

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

https://download.csdn.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概念模型

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 执行清理......

生命周期的各阶段:

4.一组标准集合

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

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

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


 

原文地址:https://www.cnblogs.com/viplanyue/p/13573671.html