目录
分模块设计与开发
将一个大项目拆分成若干个子模块,方便项目的管理维护,扩展,也方便模块间的相互引用,资源共享。
拆分策略
策略一:按照功能模块拆分,比如:公共组件、商品模块、搜索模块、购物车模块、订单模块等。
策略二:按层拆分,比如:公共组件、实体类、控制层、业务层、数据访问层。
策略三:按照功能模块 + 层拆分。
继承与聚合
继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。
第一步:创建父工程,设置打包方式为pom,并继承spring-boot-starter-parent
第二步,在子工程中配置继承关系
在子工程中通过parent标签来设置继承关系,来指定当前这个子工程要继承我们所创建的这个父工程,要指定父工程的坐标,通过relativePath来指定父工程的相对路径,那如果你不指定,默认的是从本地仓库或者远程仓库来查找,一旦设置了继承关系,这个组织的名字也会从父工程商继承下来,所以子工程中配置的groupId是可以省略的
第三步,在父工程中配置各个工程的共有依赖
在子工程中,配置了继承关系后,坐标中的groupId是可以省略的,因为会自动继承父工程。
若父子工程都配置了同一个依赖的不同版本,以子工程为准
版本锁定
在maven中,可以在父工程的pom文件中通过<dependencyManagement>来同意管理依赖版本
<dependencies>是直接依赖,在父工程配置了依赖,子工程会直接继承下来
<dependencyManagement>是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)
聚合
将多个模块组织成一个整体,同时进行项目的构建
聚合工程师一个不具有业务功能的“空”工程,有且仅有一个pom文件。tlias-parent既可以作为父工程,也可以作为聚合工程,通常来说父工程和聚合工程都是同一个工程,
作用
聚合的作用就是快速构建项目,在构建项目的过程中,我们是不需要考虑工程间的依赖关系的,我们直接在这个聚合工程上进行操作就可以了,比如我们要安装,我们直接在聚合工程上安装,那么下面的这些个子模块都会全部的进行安装
实现
在Maven中可以通过<modules>设置当前聚合工程所包含的子模块名称
Maven在执行聚合操作时,会自动的根据模块之间的依赖关系来设置构建的顺序,与我们在聚合工程中所配置的这个模块的顺序是没有关系的
如果我们配置好了聚合关系之后,指定了这个聚合工程要聚合哪些模块之后,在右侧的Maven面板中只会展示这个tlias-parent,紧接着将它展开才会看到他里面聚合的其他模块
接下来我们要进行操作的时候就可以直接在聚合工程里进行操作,0比如要进行clean清理,就直接在聚合工程中进行清理
Maven中继承与聚合的联系与区别?
联系
都属于设计型模块,打包方式都位pom,不用写任何的Java代码,常将两种关系制作到同一个pom文件中
区别
继承可以用来简化依赖的配置,我们可以将子工程上公共的这部分依赖统一的抽取到父工程中,所以可以简化依赖的配置,也可以管理依赖的版本,而在配置继承关系的时候,它不是在父工程商配置,而是在子工程中配置他们之间的继承关系,这是继承
对于聚合来说,它的作用是为了快速构建项目,而不用去处理繁琐的模块之间的依赖关系,而对于这一层聚合关系来说,而它是在父工程上来配置当前这个聚合工程要聚合哪些模块的
私服
私服就是在公司内部搭建的一台私有的服务器,公司内部的各个团队之间是有权限来操作这个私服的,有了私服之后,A团队开发人员就可以将打包好的jar包直接上传到私服,同一个公司的其他团队就可以连接同一台私服,然后从私服中将这个依赖再下载下来,这个时候jar包就有了,这样我们就解决了团队内部的资源共享问题。
假设在A团队中又用到了一个jar包,但是这个jar包它不是自己开发的,是第三方官方提供的一个jar包,那么这个时候它的依赖查找的顺序是什么样子的?首先它会到本地仓库区查找,如果本地仓库没有这个依赖,它会从私服中去查找这个依赖,那如果私服中也没有这个依赖,此时私服会去连接Maven中的中央仓库,会从中央仓库中将jar包下载下来,然后再存放到私服当中,最后在下载到我们的本地仓库中
介绍
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题
私服在企业项目开发中,一个项目/公司,只需要一台即可,对于我们开发人员来说,我们只需要会配置,会使用,会连接上这个私服,即可
私服的上传与下载
在私服中存储的都是一个一个的仓库,而这些仓库里面存放的又是什么呢?就是一些资源,而这一块所说的资源指的就是各种各样的jjar包,这个私服常见的就是这三类仓库
第一类仓库就是central,这个代表的是从中央仓库中下载下来的jar包,都会存放在这个仓库中
这个release(发行版本):功能趋于稳定,当前更新停止,可以用于发行的版本,存储在私服中的release仓库中
snapshot(快照版本):功能不稳定,尚处于开发中的版本,即快照版本,存储在私服的snaphot仓库中
如何将模块上传到私服中?
首先第一步,我们先需要将当前的tlias-utils这个模块要安装到Maven的本地仓库,安装到本地仓库后接下来我们在执行一个指令就可以将这个资源传到私服中了,这个指令叫deploy,这个也是Maven生命周期的一个阶段,就会将这个模块直接传到私服当中,那我们本地的Maven要想访问这个私服,必须具备合法的权限才可以,所以我们需要在我们本地所安装的Maven的环境中来配置私服访问的用户名/密码
我们要将tilas-utils这个资源上传到私服中,上传到哪个私服?私服的访问地址是什么?这个我们是需要在Maven项目中来配置的,所以我们需要在idea中的Maven项目中来配置上传资源的位置,其实就是来配置这个url地址,这个url地址指的是私服仓库的url地址,这是上传资源我们需要做的两步配置
我们可能还会从私服中下载资源,比如我们在项目中用到的一个依赖logback这个依赖,此时Maven就会从本地仓库中查找这个依赖,如果本地仓库中没有,那此时我们的这个Maven就会去连接私服,连接哪个私服呢,这个时候我们就需要在Maven的配置文件中来配置连接私服的地址,要来指定我们连接的是哪个私服,要从哪个私服中来下载这个资源,然后我们就可以从私服中下载资源,将资源下载到我们的本地仓库,然后在我们的项目中就可以关联到本地仓库的这个依赖了
三步配置
1.配置私服的访问用户名/密码。
这个需要在我们的Maven的配置文件,也就是setting.xml中来配置,而这里配置的用户名和密码有两套,一套就是release仓库的访问用户名和密码,第二套就是snapshots这个访问仓库用户名和密码是什么,这是第一步
2.在idea的maven项目的pom文件中配置上传(发布)地址
来指定当前我们所开发的资源要上传到哪个私服中,此时要在pom文件中配置这两个仓库的地址,一个仓库就是maven-release,这个代表的是release版本仓库的地址,另外一个是maven-snapshots,代表的是snapshot这个版本的地址
3.我们在下载资源所需要的配置
我们需要在maven的setting.xml配置文件中来配置当前私服的地址,要配置这个mirrors,就是私服镜像的地址,来指定将来下载jar包,要从哪个私服中来下载
而这里除了mirrors镜像地址以外,我们还需要再加上profile配置,原因是因为默认私服不允许我们访问snapshots快照版本的仓库,因为快照版本的依赖是不稳定不安全的,如果我们想访问这个快照版本的依赖,就需要配置一下我们的策略,这个策略主要是releases,enabled这个标签设置为true代表的是releases这个版本是可以使用的,snapshots这个enabled也设置为true就代表这个快照版本我们也要使用,如果不加入这个配置,只允许使用releases仓库的依赖
配置好了之后,要想实现资源的上传,我们只需要执行maven生命周期中的deploy阶段就可以了,此时就会将我们开发的maven模块直接上传到maven私服中
首先我们需要将我们本地准备好的私服将它启动起来,这个私服的搭建不要求大家掌握