文章目录
一、分模块开发
1、分模块开发的意义
将原始模块按照功能拆分为若干个子模块,方便模块间的相互调用,接口共享。
2、分模块开发与设计
将其中一部分功能抽出来,做成一个独立的模块,然后在使用方使用maven的依赖坐标去引用。
- STEP1:创建Maven模块
- STEP2:书写模块代码,如product模块、gateway模块…,横向拆分还是纵向拆分自己定
- STEP3:通过Maven的install指令安装模块到本地仓库,否则只导入依赖A的坐标,而依赖A在本地仓库并没有,则error
二、Maven依赖
依赖即当前项目运行所需的jar包,一个项目可以设置多个依赖
1、依赖传递
2、依赖传递冲突
依赖传递途中,出现了两个不同版本的同一个jar包,优先级理论如下:
理解就行,工作时刷新右侧Maven,出来哪个自然就是哪个生效了。
整个依赖关系,除了点开看,也可以直接点这里:
3、可选依赖(不透明)
即,引用我的人看不到我是否用了这个依赖。不想让别人知道我用过这个资源,这样也可以避免一些依赖冲突的问题。
<dependency>
...
<optional>false</optional>
</dependency>
java001引用java002,本来可以看到2中引用了log4j:
被引用的2不想让别人知道引用了log4j,则加optional:
总结即:
- 被引用方隐藏自己的某个依赖A,引用方视角中,看不到被引用方有没有用这个依赖。
- 隐藏后的对应资源不再具有依赖传递性
4、排除依赖
即:主动断开依赖的资源,这时不用写版本,三坐标中的version不用
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
可选依赖是我隐藏我自己的某个依赖,别人不知道我有没有用过它;排除依赖是我用了别人的东西,发现有一部分我不想要,需要去掉
三、Maven配置管理
1、继承和聚合
聚合:
问题:
当pojo模块更新,如删掉一个属性,如果其余模块未能同步更新,则会导致其余模块不可用。
引入一个聚合工程,来同步管理,实现已更新模块关联的模块的同步更新。
聚合工程开发步骤:
STEP1:
创建Maven模块(空),设置打包类型为pom
STEP2:
在pom文件中设置当前聚合工程所包含的子模块的名称
继承:
问题:
继承:
继承描述的是两个工程间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承,优势是:
- 简化配置
- 减少版本冲突(大家用同一版本的配置,一改全改)
继承的实现步骤:
-
STEP1:
创建Maven模块,设置打包类型为pom
-
STEP2:
在父工程的pom文件中配置公共的依赖关系,以便子工程以后继承沿用
-
STEP3:
在父工程的dependencyManagement标签中配置子工程可选的依赖
-
STEP4:
在子工程中用parent标签配置当前工程所继承的父工程
-
STEP5:
在子工程中配置使用父工程中可选依赖的坐标,注意不用版本坐标,版本又父工程统一提供,一避免冲突
聚合和继承的对比整理:
2、属性和版本管理
属性:
问题:
需要更改依赖版本的时候,即使有了继承简化,一下改多个依赖的版本仍然容易漏掉,考虑通过引入一个变量来实现—–即属性。
属性的配置与使用
-
STEP1:
在父工程的pom文件的properties标签中定义属性,如spring.version
-
STEP2:
使用dollar大括号引用属性,以后方便修改
配置文件加载属性:
资源文件如jdbc.properties中如何引用pom文件中的属性?
STEP1:
在pom.xml中定义属性
STEP2:
配置文件中使用dollar大括号引用属性
STEP3:
在pom文件中开启资源文件目录加载属性的过滤器,以便directory标签中的目录可以解析变量
Maven打war包的时候,没有web.xml文件会报错,如何解决?
-
思路1):创建个空的web.xml文件欺骗IDEA
-
思路2):在(父)pom文件中加配置,忽略web.xml检查
其余属性:
版本管理:
引入的依赖的版本号命名规则多样:
**关于版本号:**
3、多环境配置与应用
多环境开发:
maven提供配置多种环境的设定,帮助开发者在使用过程中快速切换环境
比如以上三个环境,打包的时候如何快速切换选定某一个来打包。
多环境开发步骤:
STEP1:
在pom文件中,用profiles标签定义多个环境:env_dep、env_pro、env_test
STEP2:
使用多环境
跳过测试:
问题场景:
- 功能更新中,还没开发完毕,想临时打个包,此时测试不通过,则导致打包失败
- 想快速打包,不想等测试
跳过测试的方法:
-
方式一: 闪电图标,但这样所有的模块就都跳过了
-
方式二: 用指令
-
方式三: 在pom文件中,使用测试插件,进行细粒度控制
四、Maven私服
- 替代Maven团队提供的中央仓库,在团队内部使用的仓库
- 私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题
1、私服的安装与分类
-
下载:
-
启动:
-
分类:
2、本地仓库访问私服配置
IDEA和私服间进行资源的上传与下载,中间要通过本地仓库来打交道,因此需要配置本地仓库访问私服的配置。
修改本地仓库的setting文件内容,配置访问私服的参数:
- 本地仓库访问私服权限设置:
- 本地仓库访问私服地址设置:
到此,本地仓库和私服接上头了。
3、私服资源的上传与下载
- 工程需要上传到私服,需要修改工程的pom文件:
- 配置完成后,发布使用
mvn deploy
- 配置私服访问中央仓库,如改为阿里云的中央服务器:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146077.html