maven

1、Maven简介

maven坐标库网址:mvnrepository.com(用于查找需要的jar包依赖坐标)

Maven是什么

  • Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model):项目对象模型

Maven的作用:

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的、统一的项目结构

2、下载与安装配置

下载与安装:官网下载maven解压即可;

maven环境变量配置:

  • 依赖java,需要配置JAVA_HOME
  • 设置maven自身的运行环境,需要配置MAVEN_HOME

配置MAVEN_HOME:

1、打开高级系统设置,点击环境变量->系统变量->新建->变量名填写maven解压目录

2、系统变量中点击path->新建

测试是否配置成功:打开cmd窗口,输入mvn可以看见如下信息表明配置完成 

maven_第1张图片

3、MAVEN基础概念

(1)仓库

  • 仓库:用于存储资源,包含各种jar包
  • 仓库分类:
    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:
      • 中央仓库:Maven团队维护,存储所有资源的仓库
      • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
    • 私服的作用:
      • 保存具有版权的资源,包含购买或自主研发的jar   
        • 中央仓库中的jar都是开源的,不能存储具有版权的资源 
      • 一定范围内共享资源,仅对内部开放,不对外共享      

(2)坐标

什么是坐标?

Maven中的坐标用于描述仓库资源的位置https://repo1.maven.org/maven2/

Maven坐标主要组成:

groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)

artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM\SMS)

version:定义当前项目版本号

Maven坐标的作用:

使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

(3)仓库配置

maven本地仓库文件夹默认放在c盘用户下的.m2文件夹下面,一般需要修改本地仓库位置放在非c盘目录中。

1、创建文件夹local_repository

maven_第2张图片

 2、进入maven安装目录conf下,找到settings.xml修改配置文件

maven_第3张图片

添加localRepository标签,填写maven本地仓库新建文件夹目录位置:后面下载的jar包都会放到此处

在settings.xml中配置镜像:jar从哪里下载,公司如果没有私服一般配置阿里镜像(不修改默认从国外服务器上下载非常慢),有则改成公司私服的地址:

maven_第4张图片

全局setting与用户setting的区别:

  • 全局setting定义了当前计算器中Maven的公共配置
  • 用户setting定义了当前用户的配置

4、第一个Maven项目(手工制作)

4.1Maven工程目录结构

maven_第5张图片

4.2构建命令

Maven的构建命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔

mvn compile       #编译

mvn clean           #清理

mvn test              #测试

mvn package      #打包

mvn install          #安装到本地仓库

4.3第一个Maven项目(idea生成)

配置maven

maven_第6张图片

手工创建Java项目

5、依赖管理

5.1依赖配置

  • 依赖指当前项目运行所需要的jar,一个项目可以设置多个依赖
  • 格式:

maven_第7张图片 

5.2依赖传递

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

间接依赖案例:项目2将项目3引入依赖里面,则项目3中有的所有jar也会被引入项目2中,项目2间接的引用了项目3中所有的依赖

maven_第8张图片

依赖传递冲突问题:

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

5.3可选依赖

  • 可选依赖指对外隐藏所依赖的资源--不透明

maven_第9张图片

在间接依赖中项目2将项目3引入了依赖,项目3中的依赖可以在项目2中看见,如果在项目3中配置可选依赖加一行标签,则项目3中用到的依赖在项目2的Dependencies下面看不见

5.4排除依赖

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本--不需要

maven_第10张图片

主动断开junit中的依赖hamcrest

maven_第11张图片 

 项目2中引用了项目3的依赖,但是断开项目3中log4j的资源

可选依赖:不让别人知道自己用了什么依赖

排除依赖:主动不引用依赖里面的那个

5.5依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scop标签设定其作用范围
  • 作用范围
    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包(package指令范围内)

maven_第12张图片

依赖范围传递性

  • 带有依赖范围的资源在进行传递时,作用范围将受到影响 

maven_第13张图片

6、生命周期与插件

6.1构建生命周期

Maven构建生命周期描述的是一次构建过程经历了多少个事件

  • clean:清理工作
  • default:核心工作,例如编译,测试、打包、部署等
  • site:产生报告,发布站点等

clean生命周期:

  • pre-clean   执行一些需要在clean之前完成的工作
  • clean          移除所有上一次构建生成的文件
  • post-clean   执行一些需要在clean之后立刻完成的工作

default构建生命周期:

maven_第14张图片

site构建生命周期:

  • pre-site         执行一些需要在生成站点文档之前完成的工作
  • site                生成项目的站点文档
  • post-site        执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy    将生成的站点文档部署到特定的服务器上

6.2插件

  • 插件与生命周期内阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上绑定有预设的功能
  • 通过插件可以自定义其他功能

maven_第15张图片


Maven高级部分:

 7、分模块开发与设计

maven_第16张图片

8、聚合

创建一个模块专门用来管理其他几个模块的依赖

maven_第17张图片

  • 作用:聚合用于快速构建maven工程,一次性构建多个项目/模块
  • 制作方式:

        (1)创建一个空模块,打包类型定义为pom

pom

        (2)定义当前模块进行构建操作时关联的其他模块名称

maven_第18张图片

注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。 

9、继承

10、属性

11、版本管理

12、资源配置

13、多环境开发配置

14、跳过测试

15、私服

你可能感兴趣的:(maven,数据库,java)