分模块开发与设计
分模块开发的意义
将原始功能按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享
依赖管理
依赖具有传递性
-
直接依赖:在当前项目中通过依赖配置建立的依赖关系
-
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
依赖传递冲突问题
-
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低;层级越浅,优先级越高(路径近者优先原则)
-
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的(第一声明者优先原则)
可选依赖与排除依赖
可选依赖:对外隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性——不透明
<optional>true/false</optional>
排除依赖:隐藏当前资源对应的依赖关系(排除依赖资源中不想要的依赖,排除间接依赖)——不需要
<exclusions> <exclusion> <groupId></groupId> <artifactId></artifactId> </exclusion> </exclusions>
继承与聚合
聚合
-
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
-
聚合工程:通常是一个不具有业务功能的 “空” 工程(有且仅有一个pom文件)
-
作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
-
当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
-
<!-- 打包方式改为pom--> <packaging>pom</packaging> <!-- 设置管理的模块名称--> <modules> <module>../Hello</module> <module>../HelloFriend</module> <module>../Maven_test</module> </modules>
继承
-
概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
-
作用
-
简化配置
-
减少版本冲突
-
父工程的pom文件:
<!-- 设置打包类型为pom--> <packaging>pom</packaging> 在父工程中的pom文件中配置依赖关系 <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> </dependencies> 配置子工程中可选的依赖关系 <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> .... </dependencies> </dependencyManagement>
子工程的pom文件:
<!-- 配置当前工程继承自parent工程--> <parent> <groupId>cn.rjxy.maven</groupId> <artifactId>maven_01_Parent</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 快速定位父工程的位置,可不写--> <relativePath>../maven_01_Parent/pom.xml</relativePath> </parent> <!-- 在子工程中配置使用父工程中的可选依赖坐标--> <!-- 子工程中使用父工程中的可选依赖时,仅需提供群组id和项目id,无需提供版本,版本由父工程统一提供,避免版本冲突--> <!-- 子工程中还可以定义父工程中没有定义的依赖关系--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> </dependencies>
聚合与继承的区别
属性
定义属性 <properties> <spring.version>5.2.10. RELEASE</spring.version> <junit.version>4.12</junit.version> </properties> 引用属性 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency>
配置文件加载属性
版本管理
-
工程版本:
-
SNAPSHOT (快照版本)
-
项目开发过程中临时输出的版本,称为快照版本
-
快照版本会随着开发的进展不断更新
-
-
RELEASE(发布版本)
-
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
-
-
-
发布版本
-
alpha版:经过了alpha测试
-
beta版:经过了beta测试
-
纯数字版
-
多环境配置与应用
私服
私服简介
-
私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步的问题
-
Nexus
-
Sonatype公司的一款maven私服产品
-
安装与启动
-
启动服务器(命令行启动)
-
nexus.exe /run nexus
-
-
访问服务器(默认端口:8081)
-
修改基础配置信息
-
安装路径下etc目录中nexus-default.properties文件保存有nexus基础配置信息,例如默认访问端口
-
-
修改服务器运行配置信息
-
安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,例如默认占用内存空间
-
-
-
私服仓库分类
资源的上传与下载
上传
-
本地仓库访问私服权限设置
配置位置(setting.xml文件)
-
本地仓库访问私服地址设置
-
工程上传到私服服务器设置
配置位置(工程pom文件)
-
发布命令
mvn deploy
注:当前工程版本号为什么版本就发布到什么版本中