Maven高级

简介: Maven高级

分模块开发与设计

将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享

1.创建你对应的模块

2.书写模块代码

注意事项:分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。

3.通过maven指令安装模块到本地仓库(install指令)

团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服)

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

简介依赖:被资源的资源如果依赖其他资源,当前项目简介依赖其他资源

这边用Mybatis2,那边用mybatis3,那到底是用2还是3呢,这就有了依赖冲突。

特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

直接依赖的资源就是1度的,直接依赖资源依赖的资源就是2度,再接着就是3度、4度...以此类推。1度的资源优先级高于2度的,比如1度用的资源版本是1.0,2度资源用的版本神2.0,那么还是以1.0为准,这就是所谓的路径优先。

如果两个依赖都是3度的,那么就看谁的声明优先,比如这张图,红色框住的在上面的就是优先级高的,反之,在下面的就是优先级低的,这种排序方式就是所谓声明优先。

可选依赖是隐藏当前工程所依赖的资源,隐藏后对应将不具有依赖传递性

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

排除依赖资源仅指定GA即可,无需指定V

你用别人的东西一定是用排除依赖

你的东西给别人用不想让别人知道就可以用可选依赖

继承与聚合

聚合

聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合

聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)

作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建

当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量OK同步构建的问题

<modules>标签 设置管理的模块名称

假设有三个依赖依赖着C,C更新了,C里面一个其他三个依赖的资源删了,然后导致其他的依赖也无法运行了。为了解决这种问题,我们提出了一个管理。这个管理做的工作就是把这四者放在一起运行、一起更新,这样出现问题也能即时修复。

构建是按照依赖的关系构建,比如A依赖B,那么必将会先构建B,它首先将对没有依赖关系的进行构建。

每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war

聚合工程中所包含的模块在进行构建时会根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关,参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与工程的聚合。

继承

概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承

作用:

简化配置

减少版本冲突

子工程中可以使用父工程中的依赖

开了继承之后,父工程里有的东西,子工程中也会有

这个可以起到简化配置的作用

提供可选择的依赖资源,你想用得写上,为了应对有的子工程需要有的子工程不需要,所以我们不把这个依赖加到父工程中去,就是为了实现灵活选择。

子工程中使用父工程中的可选依赖时,仅需要提供群组id和项目id,无需提供版本,版本由父工程统一提供,避免版本冲突。子工程还可以定义父工程中没有定义的依赖关系

聚合与继承的区别

作用

聚合用于快速构建项目

继承用于快速配置

相同点

聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中

聚合与继承均属于设计型模块,并无实际的模块内容

不同点

聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些

继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

用一个变量来设定依赖的版本,完成统一修改

伺服就是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题

Nexus

Sonatype公司的一款maven私服产品

私服仓库分类

我开发了一个模块,需要把模块放到私服上面。在没有私服的情况下,我们的模块都是放到本地的maven仓库里面,我们说把模块放到私服上面其实就是放到私服的仓库里面。私服就是用仓库来放东西的。

私服有多个仓库,其中一个是放第三方插件的,本地问私服要插件,如果私服没有这个插件,那么它就会从中央下载这个插件然后放到自己的仓库里边。本地再从私服的仓库拿。

资源上传与下载

上传的位置(宿主地址)

访问私服的用户名/密码

下载的地址(仓库组地址)

分模块开发与设计

分模块开发意义

分模块开发意义

将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享

对于要被其他模块加载的模块,先让它进行初始化,然后我们就可以在工作台看到显示安装的信息。安装好了之后,其他依赖这个模块的模块就能正常运行了

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被资源的资源如果依赖其他资源,当前项目简介依赖其他资源

特殊优先:当同配置了相同资源的不同版本,后配置的覆盖先配置的

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

你用别人的东西的时候,你使用的依赖版本的跟别人的不一样,那么你一定是排除别人的依赖

你自己的东西给别人用,那肯定是把自己的依赖隐藏起来,避免影响别人

聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合

聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)

作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建

作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建

当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批批量模块同步构建的问题

概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承

作用:

简化配置

减少版本冲突

继承

概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承

作用:

简化配置

减少版本冲突

加载配置文件

<resource> <directory>../maven_02_ssm/src/main/resources</directory> <filtering>true</filtering> </resource

将数据注入配置

<!--定义属性--> <properties> <spring.version>5.2.10.RELEASE</spring.version> <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url> </properties>

工程版本:

SNAPSHOT(快照版本)

项目开发过程中临时输出的版本,成为快照版本

快照版本会随着开发的进展不断更新

RELEASE(发布版本)

项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

发布版本

alpha版

beta版

纯数字版

多环境开发

maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境

配置多个环境,然后点击m按钮


目录
相关文章
|
6月前
|
Java Maven Spring
Maven高级-属性配置使用、资源文件引用属性及版本管理
Maven高级-属性配置使用、资源文件引用属性及版本管理
164 0
|
6月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
73 0
|
6月前
|
Java Maven
Maven高级-分模块开发和设计及依赖管理
Maven高级-分模块开发和设计及依赖管理
81 0
|
6月前
|
存储 Oracle Java
Maven高级-私服简介与安装及私服仓库分类
Maven高级-私服简介与安装及私服仓库分类
130 0
|
6月前
|
Java Maven 开发者
Maven高级-聚合与继承 私服(图文并茂)
Maven高级-聚合与继承 私服(图文并茂)
69 0
|
6月前
|
Java Maven 数据安全/隐私保护
Maven高级-本地仓库访问私服配置及私服资源上传与下载
Maven高级-本地仓库访问私服配置及私服资源上传与下载
1204 0
|
6月前
|
Java 测试技术 Maven
Maven高级-多环境配置与应用及跳过测试方式
Maven高级-多环境配置与应用及跳过测试方式
91 0
|
6月前
|
Java Maven
Maven高级-聚合及实施步骤
Maven高级-聚合及实施步骤
69 0
|
存储 Java 程序员
【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!
依赖范围传递性 带有依赖范围的资源在进行传递时,作用范围将受到影响
88 0
|
IDE Java 应用服务中间件
“解锁IDEA的潜力:高级Java Maven项目配置指南”
“解锁IDEA的潜力:高级Java Maven项目配置指南”
102 0