Maven基础

简介: Maven基础

Maven

Maven把项目开发和管理过程抽象为一个项目对象模型(POM)

POM(Project Object Model):项目对象模型

image-20230514155038037.png

Maven的作用:

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

Maven核心概念

仓库

用于存储资源,包含各种jar包

image-20230514160340819.png

坐标

https://mvnrepository.com/

用于描述仓库中资源的位置

Maven坐标主要组成:

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
  • version:版本号
  • packaging:打包方式

项目构建

mvn compile         # 编译

mvn clean           # 清理(删除编译完成的东西)

mvn test            # 测试

mvn package         # 打包(打成jar包)

mvn install         # 安装到本地仓库

依赖管理

依赖配置

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

image-20230514192043941.png

依赖传递

依赖具有传递性

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

image-20230514192539326.png

依赖传递冲突问题

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

可选依赖

可选依赖指对外隐藏当前所依赖的资源——不透明

image-20230514193135365.png

排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——排除依赖就是不需要某依赖

image-20230514193337680.png

依赖范围

scope

依赖的jar默认情况下可以在任何地方使用,可以通过scope标签设定其作用范围

作用范围:

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包(package指令范围内)

image-20230516194900256.png

servlet-api不参与打包,因为服务器上tomcat本来就有,会冲突

依赖范围传递性

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

image-20230516195700950.png

生命周期与插件

项目构建生命周期

image-20230516200206349.png

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

Maven对项目构建的生命周期划分为3套:

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

clean生命周期

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

default生命周期

image-20230516200720498.png

site生命周期

image-20230516200757820.png

插件

image-20230516200952024.png

image-20230516201242880.png

多模块构建维护

聚合

image-20230516201858004.png

image-20230516202015891.png

image-20230516202122715.png

聚合:

作用:管理多模块

image-20230516202424193.png

继承

模块依赖关系维护

image-20230516202933965.png

image-20230516203054006.png

image-20230516203225836.png

子工程在继承父工程之后,dependency的version可以不写

继承:

作用:通过继承可以实现在子工程中沿用父工程中的配置

image-20230516204048666.png

image-20230516204132467.png

继承依赖使用

在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本

image-20230516210037268.png

继承的资源

image-20230516210258200.png

继承与聚合

image-20230516210409840.png

属性

image-20230517164602360.png

image-20230517164615268.png

属性类别

image-20230517164850940.png

image-20230517164910783.png

image-20230517164931937.png

image-20230517164948470.png

image-20230517165017339.png

image-20230517165233357.png

版本管理

image-20230517165420907.png

image-20230517165449673.png

image-20230517165735822.png

资源配置多文件维护

image-20230517170302205.png

image-20230517170354201.png

image-20230517170540157.png

配置文件引用pom属性

image-20230517170652587.png

多环境开发配置

image-20230517170905345.png

image-20230517171040023.png

image-20230517171207065.png

image-20230517171325731.png

加载指定环境

image-20230517171434344.png


目录
相关文章
|
1月前
|
Java 关系型数据库 数据库连接
|
9月前
|
Java 测试技术 Maven
Maven开发中遇到的问题解决 1
Maven开发中遇到的问题解决
59 0
|
9月前
|
Oracle Java 关系型数据库
Maven开发中遇到的问题解决 2
Maven开发中遇到的问题解决
96 0
|
10月前
|
存储 Java Apache
2.0 Maven基础
Apache Maven是一个软件项目管理工具,将项目开发和管理过程抽象程一个项目对象模型(POM,Project Object Model)。
90 0
|
Java Maven
Maven基础
Maven基础
109 0
|
XML Java 应用服务中间件
maven基础篇(三)
maven基础篇
156 1
|
Java Maven 开发工具
maven基础篇(四)
maven基础篇
137 1
|
存储 安全 Java
|
JavaScript Java Maven
|
存储 IDE Java