Maven高级(继承与聚合+私服)

分模块设计和开发

为什么要分模块设计?
一个项目往往是分为好几个模块的
如果不同模块全写在一个项目里面
所有的程序员都要调用这有个项目就难以维护
Maven高级(继承与聚合+私服)_第1张图片
Maven高级(继承与聚合+私服)_第2张图片
比如我们之前设计的板块
就不太合理,现在我们把实体类和对应的工具类单独开出两个maven模块存储
然后让我们的主功能类依赖这两个模块,这样更安全,也更方便
Maven高级(继承与聚合+私服)_第3张图片
Maven高级(继承与聚合+私服)_第4张图片

新建两个maven项目,因为这些类本身我们的功能类,不用启动服务器,所以就创建maven项目即可
Maven高级(继承与聚合+私服)_第5张图片
然后把pojo包放到同名对应的包下,把原项目的pojo包进行删除
然后让原项目依赖新建的模块即可
Maven高级(继承与聚合+私服)_第6张图片
新建utils的maven项目
Maven高级(继承与聚合+私服)_第7张图片
把对应的依赖改改就差不多了和上面的pojo同理
Maven高级(继承与聚合+私服)_第8张图片

继承

前面三个项目都设计到lombok依赖
这样一直重复的写,代码复用性太低
maven项目之间的继承能解决这个问题
我们只需要创建一个maven父工程,让maven子工程进行继承
子工程中相同的依赖写入到父工程中
子工程会继承对应的配置信息!
这也是Spring的起步依赖的原理
在对应的pom.xml里用parent标签来指定父工程

Maven高级(继承与聚合+私服)_第9张图片

像我们SpringBoot的统一的父工程
spring-boot-starter-parent
Maven高级(继承与聚合+私服)_第10张图片

实现

问题1
打包方式设置成pom类型
在pom文件里怎么设置即可
Maven高级(继承与聚合+私服)_第11张图片

如图右上角有常用打包方式说明
Maven高级(继承与聚合+私服)_第12张图片
问题2
maven当中只能单继承
但我们的tails-web-management一级继承了springboot的项目
但是maven可以多重继承
可以让父工程继承Springboot即可

然后就把共有的依赖放入父工程即可
Maven高级(继承与聚合+私服)_第13张图片
配置父工程的时候会有一个
relativePath标签,指代的是父工程的相对路径(到pom文件的位置)
Maven高级(继承与聚合+私服)_第14张图片
正常这样不写的话,是直接从本地仓库查找
这样写
Maven高级(继承与聚合+私服)_第15张图片
Maven高级(继承与聚合+私服)_第16张图片

还有就是,子工程继承复工成的话,groupID如果和父工程相同就不用写了
会自动继承,当然你想要不同的话,还是要写的

小结

Maven高级(继承与聚合+私服)_第17张图片

Maven高级(继承与聚合+私服)_第18张图片
Maven高级(继承与聚合+私服)_第19张图片

版本锁定

就是这个依赖还可以起到版本统一个锁定的效果
正常的话 我们模块拆分很多需要一个一个修改依赖的版本(一个项目的模块依赖的版本肯定要一样)
但是可以通过父工程的dependencyManagement来统一管理依赖版本
注意:dependencyManagement只管理依赖的版本,不会添加依赖到子工程
Maven高级(继承与聚合+私服)_第20张图片

Maven高级(继承与聚合+私服)_第21张图片
这个标签只是子工程里有这个依赖时进行版本的管理
而不是把依赖继承给子工程

进一步简化
就是我们的父工程
如果依赖比较多,会有大量的依赖且版本号分散比较零散,不便于查看
我们可以将对应的版本号,封装到一个自定义属性标签中
在对应的版本号里面用${}即可引用properties里面的标签名,最终写入的是标签里面的文本
Maven高级(继承与聚合+私服)_第22张图片
这样的话更改对应的配置项即可
不用一个一个往下找,方便我们去管理和维护
Maven高级(继承与聚合+私服)_第23张图片
Maven高级(继承与聚合+私服)_第24张图片

聚合

我们的项目中
web-mangment依赖这pojo和utils两个模块
当我们需要打包项目上线的时候
Maven高级(继承与聚合+私服)_第25张图片
会出现找不到对应jar包的错误
因为他会先去本地仓库找这两个jar包
Maven高级(继承与聚合+私服)_第26张图片
但是默认的话它是不会自动安装的
需要我们手动用maven的install功能
安装完毕两个子工程,并且安装对应的父工程
tails-parent
然后再打包才能完成打包操作
Maven高级(继承与聚合+私服)_第27张图片

可以发现这个过程挺繁琐的
so我们需要maven聚合来解决这个麻烦
聚合能让我们实现一键编译,一键打包,一键安装等等

实操

一般我们需要一个聚合项目
这个项目介绍空工程,和我们的父工程很匹配
巧了,一般开发中我们的父工程同时也是聚合工程
当我们安装聚合工程到本地仓库
他下面的工程全会安装到本地仓库,这就是聚合
Maven高级(继承与聚合+私服)_第28张图片
而且
他会根据对应工程的依赖关系自动的设置对应的构建顺序
我们只需要在聚合工程(父工程)里面设置modules标签
把对应的需要聚合的工程写到module标签里即可
但是无是要在对应的聚合工程里进行操作的啊,会把底下的全部都打包一遍(聚合工程不会进行操作,但是module对应的工程会进行聚合工程进行的操作)
Maven高级(继承与聚合+私服)_第29张图片
Maven高级(继承与聚合+私服)_第30张图片

继承与聚合总结

Maven高级(继承与聚合+私服)_第31张图片

maven私服

B用A开发jar包
按理来说A上传到中央仓库B就可以依赖
但是中央仓库不是谁想上传就能上传的,所以我们需要私服
Maven高级(继承与聚合+私服)_第32张图片
Maven高级(继承与聚合+私服)_第33张图片
学习就是学习私服的使用拉
搭建这事目前咱还到不了那么高的高度

资源上传私服和下载

这是我们提前搭建好的私服
Maven高级(继承与聚合+私服)_第34张图片
资源上传
IDEA里面指定上传资源的url地址
然后再maven的配置文件里,指定我们的私服的用户名和密码进行操作(权限操作)
资源上传先是install操作上传到本地仓库,然后deploy操作上传到私服
下载的话
需要知道私服的位置,在maven的配置文件配置私服的位置
还有私服分三个的意思是:central就是代表从中央仓库下载的jar包,而上面两个是我们自己的资源,至于这两个不同,看下图绿色字幕(主要和我们开发项目版本有关)
Maven高级(继承与聚合+私服)_第35张图片
具体的话
就是我们的模块后面版本有SNAPSHOT的话就存储在SNAPSHOT(默认创建模块就是带这个后缀的)
只要是没有这个后缀就会存储在Release仓库里
Maven高级(继承与聚合+私服)_第36张图片
步骤开始
1.设置访问私服的密码和用户名(这里是两个一个是快照仓库,一个是发行仓库)
注意:要在maven的settings.xml(文件夹里的)里的servers标签里面进行设置
Maven高级(继承与聚合+私服)_第37张图片
2.设置上传地址是在maven工程的pom.xml配置的
也是两个版本的
Maven高级(继承与聚合+私服)_第38张图片
3.配置私服(仓库组)的地址(maven的setting.xml里面配置)
所谓仓库组就是把几个仓库组合一下,只写一个地址即可(比如我们的那三个仓库)
Maven高级(继承与聚合+私服)_第39张图片

使用私服挺固定的就是这三步操作
上网查一下都行
两个id记得对应
Maven高级(继承与聚合+私服)_第40张图片

你可能感兴趣的:(JavaWeb,maven,github,java)