maven进阶(超详细)

 多模块开发

1.抽取entity模块

将先前的SSMProject01项目中的entity文件夹抽取出来,成为一个独立的模块

在SSMProject01项目中引入maven_03_entity

首先找到maven_03_entity的pom文件

直接引入SSMProject01

 尝试编译(compile)SSMProject01项目报错,是因为没有在本地的maven库中引入maven_03_entity,进行引入(install)后,编译SSMProject01成功。

2.抽取dao模块

抽取SSMProject01项目里面的mapper文件夹,使其成为maven_04_mapper模块。

里面需要maven_03_entity实体类模块,还需要导入mysql的依赖

同时maven_04_mapper要导入SSMProject01

同样的,我们需要先install  maven_04_mapper   到maven的本地仓库 才能 compile SSMProject01

总结

将抽取后的项目进行运行,测试之前的增删改查功能依然能够使用。 所以对于项目的拆分,大致会有如下几个步骤: (1) 创建Maven模块 (2) 书写模块代码 分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。拆 分方式可以按照功能拆也可以按照模块拆。 (3)通过maven指令安装模块到本地仓库(install 指令)

依赖管理

依赖的格式

验证依赖是具有传递性的

 

这里我们手动在SSMProject01项目的pom文件中把maven_03_entity的依赖给注释掉,然后重新编译

编译成功。

所以在分模块开发中,由于不够严谨,我们实际上可能引入了重复的依赖。这个我们称之为依赖冲突。

依赖冲突,冲突时maven会如何选择?

 

 情况1:

情况2:

情况3: 

********************

 

 可选依赖和排除依赖

可选依赖:

对外隐藏当前所依赖的资源(不透明

SSMProject01中只引入maven_04_mapper 

maven_04_mapper 引入maven_03_entity

这样SSMProject01 是能正常运行的。

******************************************

现在在maven_04_mapper的pom中设置对maven_03_entity的引入为可选依赖

 导致的结果:

maven_04_mapper 一切正常  (因为它是对外隐藏,自己还能用maven_03_entity)

SSMProject01 出现错误

这是因为 maven_04_mapper模块   对SSMProject01  隐藏了   对maven_03_entity的引入

排除依赖

排除依赖是指主动断开依赖的资源

重新回到最初的状态:

SSMProject01中只引入maven_04_mapper 

maven_04_mapper 引入maven_03_entity

现在我们在SSMProject01的pom文件中   对maven_04_mapper 的引入中  排除对maven_03_entity的引入

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>maven_04_mapper</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
<!--                主动排除maven_03_entity-->
                <exclusion>
                    <groupId>org.example</groupId>
                    <artifactId>maven_03_entity</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

这样同样会报错,因为找不到maven_03_entity里面的实体类

 

聚合和继承 

聚合

注:我们的SSMProject01模块在这里作为maven_02_ssm(当然可以进一步拆分模块),这个01序号是留给maven_01_parent模块,我们聚合模块用的。下面的继承也是。

继承

注:实现继承和聚合可以是同一个模块,但是继承和聚合完全是两回事。

*******************************************

区分与总结

maven中的属性 

 配置文件中的属性

版本管理 

多环境开发

跳过测试

私服 

感觉和git一个作用啊???

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值