01-Maven高级
创始人
2024-03-04 16:29:46
0

回顾

知识目标

第一单元、父子工程

1、为什么使用父子工程?

1.1、痛点1:提高了代码的重用性

父控制器的存在就是为了去除重复,一个项目存在多个模块,可能由多个人开发,比如abc3个模块,3个模块都是基于spring的那么3个开发都需要引入spring的核心jar包,这样就引入了3份,但是使用父子工程,则只需要在父工程中引入了,则子工程自动继承。

1.2、痛点2:提高了模块的分离度

按照以往的创建项目方式,一个maven项目就是一个大工程,一开始还能进行简单的测试编译,但是随着项目的不断变大和复杂化,后期再做改动则可能牵一发而动全身。但是使用父子工程,每个模块都是独立的,他们通过父控制器聚合在一起,这样当你要改动一个模块的时候你改动的也只是这一个模块而已,并不会影响其他的模块。

2、什么是父子工程?

父子工程说白了就是利用Maven的继承,依赖传递性来为我们省略一些重复的配置,通常配置在父模块中,为子模块提供使用,这样可以做到一处声明,处处使用。

2.1、什么是继承

是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。

2.2、什么是聚合

项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web三个工程最终会打一个独立的war运行。

3、父子工程的应用

项目需求:使用maven父子工程完成登录并跳转到首页列表

3.1、创建父子工程

3.1.1、创建父工程

在这里插入图片描述在这里插入图片描述
提示:父工程只需要pom.xml文件,要将src目录删除。
在这里插入图片描述#### 3.1.2、在父工程中以module的形式创建domain层子模块
因为domain层不需要页面所以创建控制台项目即可
注意:要在父工程上右键创建模块
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述#### 3.1.3、在父工程中以module的形式创建dao层子模块
因为dao层不需要页面所以创建控制台项目即可
注意:要在父工程上右键创建模块
在这里插入图片描述在这里插入图片描述#### 3.1.4、在父工程中以module形式创建service层子模块
因为service层不需要页面所以创建控制台项目即可
注意:要在父工程上右键创建模块
在这里插入图片描述在这里插入图片描述#### 3.1.5、在父工程中以module形式建web层子模块
注意:web层中包含controller和页面,所以web层要创建maven web工程
在这里插入图片描述在这里插入图片描述在这里插入图片描述创建成功后,父工程的pom.xml中会自动引用所有的子模块
在这里插入图片描述### 3.2、建立继承和依赖关系
在开发中,service要调用dao中的数据,而web又要调用service的数据,且domain又要被其他三层所调用,他们之间的调用关系如下:web->service->dao->domain

但是现在四个子工程相互是没有任何关系的,没有关系就不能调用。我们应该将他们之间关联起来

提示:maven项目之间的引用是通过本地仓库中的jar包进行引用,所以引用前要先将对应的模块打成jar包到本地仓库

3.2.1、配置domain模块的打包方式为jar

jar

在这里插入图片描述#### 3.2.2、在dao子模块的pom中添加domain子模块的引用关系
在这里插入图片描述#### 3.2.3、在service子模块的pom中添加dao子模块的引用关系
在这里插入图片描述#### 3.2.4、在web子模块的pom中添加service子模块的引用关系
注意:web子模块的打包方式为war包
在这里插入图片描述注意:在maven父子工程中父子工程不用直接建立关系,继承关系是先天的不用建立依赖关系。 平级之间的直接引用叫依赖,依赖不是先天的,需求要后天建立

3.3、在父工程的pom中添加ssm所需坐标

将项目所需的公共坐标添加到父工程的pom文件中


4.0.0cn.woniumaven-parent1.0-SNAPSHOTmaven-domainmaven-daomaven-servicemaven-webpomUTF-81.81.85.3.6junitjunit4.12testorg.springframeworkspring-context${spring.version}org.springframeworkspring-aspects${spring.version}org.springframeworkspring-test${spring.version}cglibcglib3.3.0org.springframeworkspring-tx${spring.version}org.projectlomboklombok1.18.20${basedir}/src/main/java**/*.xml**/*.properties${basedir}/src/main/resources**/*.xml**/*.properties

3.4、编写domain子模块代码

创建实体类,注意实体类要实现序列化接口Serializable

package cn.woniu.domain;import java.io.Serializable;
import java.math.BigDecimal;/**
* 用户实体类
*/
public class User implements Serializable {private int id;private String userName;private String passwd;//省略Getter和Setter

实体类编写完成后,由于需要被 其他模块引用所以要将实体类发布到本地仓库中
在这里插入图片描述打包完成后本地仓库的cn/woniu目录下就会生成一个maven-domain.jar
在这里插入图片描述### 3.5、编写dao子模块代码

3.5.1、配置数据库连接信息

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test_mybatis?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=Aa123123.

课堂编程

第二单元:解决jar包依赖冲突问题

为什么要解决jar包依赖冲突问题?

如何解决jar包依赖冲突问题?

解决jar包依赖冲突问题的应用

第三单元:Maven私服

为什么要建设Maven私服?

什么是Maven私服?

Maven私服的建设

课堂编程

课堂小结

单元总结

作业

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...