Maven高级(一)

简介: Maven高级

Maven高级


今日目标


  • 理解并实现分模块开发
  • 能够使用聚合工程快速构建项目
  • 能够使用继承简化项目配置
  • 能够根据需求配置生成、开发、测试环境,并在各个环境间切换运行
  • 了解Maven的私服


1,分模块开发


1.1 分模块开发设计


(1)按照功能拆分


我们现在的项目都是在一个模块中,比如前面的SSM整合开发。虽然这样做功能也都实现了,但是也存在了一些问题,我们拿银行的项目为例来聊聊这个事。


  • 网络没有那么发达的时候,我们需要到银行柜台或者取款机进行业务操作
  • 随着互联网的发展,我们有了电脑以后,就可以在网页上登录银行网站使用U盾进行业务操作
  • 再来就是随着智能手机的普及,我们只需要用手机登录APP就可以进行业务操作


上面三个场景出现的时间是不相同的,如果非要把三个场景的模块代码放入到一个项目,那么当其中某一个模块代码出现问题,就会导致整个项目无法正常启动,从而导致银行的多个业务都无法正常班理。所以我们会按照功能将项目进行拆分。


(2)按照模块拆分


比如电商的项目中,有订单和商品两个模块,订单中需要包含商品的详细信息,所以需要商品的模型类,商品模块也会用到商品的模型类,这个时候如果两个模块中都写模型类,就会出现重复代码,后期的维护成本就比较高。我们就想能不能将它们公共的部分抽取成一个独立的模块,其他模块要想使用可以像添加第三方jar包依赖一样来使用我们自己抽取的模块,这样就解决了代码重复的问题,这种拆分方式就说我们所说的按照模块拆分。


1.png


经过两个案例的分析,我们就知道:


  • 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。


刚刚我们说了可以将domain层进行拆分,除了domain层,我们也可以将其他的层也拆成一个个对立的模块,如:


1.png


这样的话,项目中的每一层都可以单独维护,也可以很方便的被别人使用。关于分模块开发的意义,我们就说完了,说了这么多好处,那么该如何实现呢?


1.2 分模块开发实现


前面我们已经完成了SSM整合,接下来,咱们就基于SSM整合的项目来实现对项目的拆分。


1.2.1 环境准备


资料\maven_02_ssm部署到IDEA中,将环境快速准备好,部署成功后,项目的格式如下:


1.png


1.2.2 抽取domain层


步骤1:创建新模块


创建一个名称为maven_03_pojo的jar项目,为什么项目名是从02到03这样创建,原因后面我们会提到,这块的名称可以任意。


1.png


步骤2:项目中创建domain包


maven_03_pojo项目中创建com.itheima.domain包,并将maven_02_ssm中Book类拷贝到该包中


1.png


步骤3:删除原项目中的domain包


删除后,maven_02_ssm项目中用到Book的类中都会有红色提示,如下:


1.png


说明:出错的原因是maven_02_ssm中已经将Book类删除,所以该项目找不到Book类,所以报错


要想解决上述问题,我们需要在maven_02_ssm中添加maven_03_pojo的依赖。


步骤4:建立依赖关系


maven_02_ssm项目的pom.xml添加maven_03_pojo的依赖


 

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven_03_pojo</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>


因为添加了依赖,所以在maven_02_ssm中就已经能找到Book类,所以刚才的报红提示就会消失。


步骤5:编译maven_02_ssm项目


编译maven_02_ssm你会在控制台看到如下错误


1.png


错误信息为:不能解决maven_02_ssm项目的依赖问题,找不到maven_03_pojo这个jar包。


为什么找不到呢?


原因是Maven会从本地仓库找对应的jar包,但是本地仓库又不存在该jar包所以会报错。


在IDEA中是有maven_03_pojo这个项目,所以我们只需要将maven_03_pojo项目安装到本地仓库即可。


步骤6:将项目安装本地仓库


将需要被依赖的项目maven_03_pojo,使用maven的install命令,把其安装到Maven的本地仓库中。


1.png


安装成功后,在对应的路径下就看到安装好的jar包


1.png


说明:具体安装在哪里,和你们自己电脑上Maven的本地仓库配置的位置有关。


当再次执行maven_02_ssm的compile的命令后,就已经能够成功编译。


1.2.3 抽取Dao层


步骤1:创建新模块


创建一个名称为maven_04_dao的jar项目


1.png


步骤2:项目中创建dao包


maven_04_dao项目中创建com.itheima.dao包,并将maven_02_ssm中BookDao类拷贝到该包中


1.png


maven_04_dao中会有如下几个问题需要解决下:


1.png


  • 项目maven_04_dao的BookDao接口中Book类找不到报错
  • 解决方案在maven_04_dao项目的pom.xml中添加maven_03_pojo项目

 

<dependencies>
    <dependency>
        <groupId>com.itheima</groupId>
        <artifactId>maven_03_pojo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>


  • 项目maven_04_dao的BookDao接口中,Mybatis的增删改查注解报错
  • 解决方案在maven_04_dao项目的pom.xml中添加mybatis的相关依赖

 

 

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
</dependencies>



步骤3:删除原项目中的dao包


删除Dao包以后,因为maven_02_ssm中的BookServiceImpl类中有使用到Dao的内容,所以需要在maven_02_ssm的pom.xml添加maven_04_dao的依赖


<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven_04_dao</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

此时在maven_02_ssm项目中就已经添加了maven_03_pojomaven_04_dao


1.png


再次对maven_02_ssm项目进行编译,又会报错,如下:


1.png


和刚才的错误原因是一样的,maven在仓库中没有找到maven_04_dao,所以此时我们只需要将maven_04_dao安装到Maven的本地仓库即可。


步骤4:将项目安装到本地仓库


将需要被依赖的项目maven_04_dao,使用maven的install命令,把其安装到Maven的本地仓库中。


1.png


安装成功后,在对应的路径下就看到了安装好对应的jar包


1.png


当再次执行maven_02_ssm的compile的指令后,就已经能够成功编译。


1.2.4 运行测试并总结


将抽取后的项目进行运行,测试之前的增删改查功能依然能够使用。


所以对于项目的拆分,大致会有如下几个步骤:


(1) 创建Maven模块


(2) 书写模块代码


分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。拆分方式可以按照功能拆也可以按照模块拆。


(3)通过maven指令安装模块到本地仓库(install 指令)


团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服),私服我们后面会讲解。


目录
相关文章
|
8月前
|
Java Maven Spring
Maven高级-属性配置使用、资源文件引用属性及版本管理
Maven高级-属性配置使用、资源文件引用属性及版本管理
170 0
|
8月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
77 0
|
8月前
|
Java Maven
Maven高级-分模块开发和设计及依赖管理
Maven高级-分模块开发和设计及依赖管理
91 0
|
8月前
|
存储 Oracle Java
Maven高级-私服简介与安装及私服仓库分类
Maven高级-私服简介与安装及私服仓库分类
135 0
|
8月前
|
Java 关系型数据库 MySQL
Maven高级
Maven高级
54 0
|
8月前
|
Java Maven 开发者
Maven高级-聚合与继承 私服(图文并茂)
Maven高级-聚合与继承 私服(图文并茂)
78 0
|
8月前
|
Java Maven 数据安全/隐私保护
Maven高级-本地仓库访问私服配置及私服资源上传与下载
Maven高级-本地仓库访问私服配置及私服资源上传与下载
1274 0
|
8月前
|
Java 测试技术 Maven
Maven高级-多环境配置与应用及跳过测试方式
Maven高级-多环境配置与应用及跳过测试方式
99 0
|
8月前
|
Java Maven
Maven高级-聚合及实施步骤
Maven高级-聚合及实施步骤
73 0
|
存储 Java 程序员
【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!
依赖范围传递性 带有依赖范围的资源在进行传递时,作用范围将受到影响
98 0

推荐镜像

更多