Maven

发布于:2024-06-27 ⋅ 阅读:(144) ⋅ 点赞:(0)

目录

1.maven概念与作用

2.maven下载与安装

3.maven基础概念

3.1仓库

3.2坐标

4依赖管理

4.1依赖传递

4.2可选依赖

5.依赖范围

6.Maven高级

6.1聚合

6.2继承的资源

6.3继承与聚合

6.4属性

6.5工程版本

6.6配置文件引用pom属性

6.7仓库分类


1.maven概念与作用

Maven是什么

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

Maven的作用

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

2.maven下载与安装

maven下载

maven配置

maven配置

(1)

(2)

(3)

3.maven基础概念

3.1仓库

● 仓库:用于存储资源,包含各种jar包

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

3.2坐标

● 什么是坐标?
Maven中的坐标用于描述仓库中资源的位置
https://repo1.maven.org/maven2/
● Maven坐标主要组成
groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
version:定义当前项目版本号
packaging:定义该项目的打包方式
● Maven坐标的作用
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

全局setting与用户setting区别

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

小节

参考:黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven           p-05

● 配置本地仓库(资源下到哪)
● 配置阿里镜像仓库(资源从哪来)
● settting文件的区别

4依赖管理

4.1依赖传递

● 依赖具有传递性
◆ 直接依赖:在当前项目中通过依赖配置建立的依赖关系
◆ 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

依赖传递冲突问题

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

4.2可选依赖

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

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<optional>true</optional>

</dependency>

5.依赖范围

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

6.Maven高级

◆ 分模块开发与设计(重点)

◆聚合(重点)

◆继承(重点)

◆属性(重点)

◆ 版本管理

◆资源配置

◆ 多环境开发配置

◆ 跳过测试

◆私服(重点)

ssm_dao拆分

● 新建模块
● 拷贝原始项目中对应的相关内容到ssm_dao模块中
◆数据层接口(UserDao)
◆配置文件:保留与数据层相关配置文件(3个)
■ 注意:分页插件在配置中与SqlSessionFactoryBean绑定,需要保留
◆pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
spring
mybatis
■ spring整合mybatis
mysql
druid

· pagehelper
■ 直接依赖ssm_pojo(对ssm_pojo模块执行install指令,将其安装到本地仓库)

ssm_service拆分

● 新建模块
● 拷贝原始项目中对应的相关内容到ssm_service模块中
◆业务层接口与实现类(UserService、UserServicelmpl)
◆配置文件:保留与数据层相关配置文件(1个)
◆pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
spring
junit
■ spring 整合junit
■ 直接依赖ssm_dao(对ssm_dao模块执行install指令,将其安装到本地仓库)
■ 间接依赖ssm_pojo(由ssm_dao模块负责依赖关系的建立)
◆修改service模块spring核心配置文件名,添加模块名称,格式:applicationContext-service.xn
◆修改dao模块spring核心配置文件名,添加模块名称,格式:applicationContext-dao.xml
◆修改单元测试引入的配置文件名称,由单个文件修改为多个文件

......

......

......

......

......

......

6.1聚合

● 作用:聚合用于快速构建maven工程,一次性构建多个项目/模块。
● 制作方式:
◆创建一个空模块,打包类型定义为pom

<packaging>pom</packaging>

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

<modules>

<module> .. /ssm controller</module>

<module> .. /ssm service</module>

<module> .. /ssm dao</module>

<module> .. /ssm pojo</module>

</modules>

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

6.2继承的资源

● groupld:项目组ID,项目坐标的核心元素
● version:项目版本,项目坐标的核心因素
● description:项目的描述信息
● organization:项目的组织信息
●inceptionYear:项目的创始年份
●url:项目的URL地址
● developers:项目的开发者信息
● contributors:项目的贡献者信息
●distributionManagement:项目的部署配置
●issueManagement:项目的缺陷跟踪系统信息

● ciManagement:项目的持续集成系统信息
● scm:项目的版本控制系统西溪
● malilingLists:项目的邮件列表信息
● properties:自定义的Maven属性
● dependencies:项目的依赖配置
●dependencyManagement:项目的依赖管理配置
● repositories:项目的仓库配置
●build:包括项目的源码目录配置、输出目录配置、插件配置、
插件管理配置等
● reporting:包括项目的报告输出目录配置、报告插件配置等

6.3继承与聚合

● 作用

◆ 聚合用于快速构建项目
继承用于快速配置

● 相同点:
◆ 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
◆ 聚合与继承均属于设计型模块,并无实际的模块内容
● 不同点:
◆ 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
◆ 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

6.4属性

属性类别:环境变量属性

作用

● 调用格式

${env.JAVA_HOME}

● 环境变量属性查询方式

mvn help:system

使用Maven配置文件setting.xml中的标签属性,用于动态配置

6.5工程版本

● SNAPSHOT(快照版本)
◆项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每
个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
◆快照版本会随着开发的进展不断更新
RELEASE(发布版本)
◆项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件
是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

● 约定规范:
◆<主版本> .< 次版本> .< 增量版本> .< 里程碑版本>
◆主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代
◆次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
◆增量版本表示有重大漏洞的修复
◆里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对
来说不是很稳定,有待更多的测试

● 范例:

5.1.9.RELEASE

6.6配置文件引用pom属性

作用

● 调用格式

${ jdbc.url}

●开启配置文件加载pom属性
<!-- 配置资源文件对应的信息 -- >

<resources>

<resource>

<!--  设定配置文件对应的位置目录,支持使用属性动态设定路径 -- >

<directory>${project.basedir}/src/main/resources</directory>
<!-- 开启对配置文件的资源加载过滤 -- >

<filtering>true</filtering>

</resource>

</resources>

在任意配置文件中加载pom文件中定义的属性

6.7仓库分类

● 宿主仓库hosted
◆        保存无法从中央仓库获取的资源
■                 自主研发
■                 第三方非开源项目
● 代理仓库proxy
        代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库
● 仓库组group
◆                将若干个仓库组成一个群组,简化配置
◆                 仓库组不能保存资源,属于设计型仓库