Maven高级

导读:本篇文章讲解 Maven高级,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Maven高级

一、分模块开发与设计

在一个SSM项目中,我们常见的模块有controler层、dao层、domain层、service层等等

但是也许不是每一层都是由固定一个人开发的,那么就需要用到maven来管理这些分开的模块

在这里插入图片描述


1、实现流程

当每一个模块开发好之后,我们需要使用maven的install指令,将其安装到本地仓库中

然后在需要引用该模块的模块的pom.xml文件中引入坐标

在这里插入图片描述

上图是一个模块开发候的坐标,也是引用的坐标

注意:

  1. 一定要先install安装到本地仓库。否则就算没有出错,到时候也不能用maven编译,会报错
  2. 每个模块只需要保留该模块需要的配置文件或者相关的类文件即可,不需要保留无用的文件
  3. 不同模块间的配置文件名称不可相同,因此命名配置文件的时候需要安装模块命名,可以有效避免重名
  4. 就ssm而言,修改配置文件web.xml配置文件加载spring环境的文件名称时,可以使用*统配,加载所有的applicationContext配置文件

二、聚合

为了避免多模块开发完成后,这当中某个模块进行了升级,然后导致其他模块的某些地方也要进行升级,我们就可以额外使用一个模块来同时管理开发完成的模块,使得当当中一个模块升级后,其他也要重新编译升级,这就叫聚合

也就是说聚合就是通过一个模块管理其他某些模块的构建,同时执行生命周期执行

在这里插入图片描述


1、实现流程

  1. 新建一个模块(这个模块不需要用src)
  2. 定义该工程用于构建管理
  3. 声明管理工程列表

在这里插入图片描述

注意:参与聚合操作的模块最终执行顺序与模块间的依赖有关,与配置顺序无关


三、继承

继承主要用于模块依赖关系的维护

可以防止每个模块开发的时候,使用某个依赖版本号不同,导致程序出现错误,因此可以额外添加一个模块,在这模块中声明使用的依赖的版本,后续子模块只需要声明依赖即可,不需要声明版本

在这里插入图片描述


1、实现流程

  1. 声明此处进行依赖管理(使用dependencyManagement标签)

    在这里插入图片描述

  1. 在子工程声明父工程(因为子工程的groupId和版本号需和父工程保持一致,因此子工程不再需要声明这两个)

    在这里插入图片描述

  1. 在父工程声明好的依赖版本,子工程不需要再声明

    在这里插入图片描述


四、继承与聚合

  • 作用
    • 聚合用于快速构建项目
    • 继承用于快速配置
  • 相同点
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
    • 聚合与继承均属于设计模块,并无实际模块内容
  • 不同点
    • 聚合是当前模块中配置关系,聚合可以感知参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

五、属性

pom文件通常会有很多依赖,当我们需要修改其中一个依赖的版本的时候,有些时候其他版本也需要修改,因此为了统一管理,防止修改的时候漏了某一个忘记修改,我们可以像JAVA一样自定义一个属性,当我们修改属性的值的时候,版本号也随之修改

在这里插入图片描述

  <!--自定义属性-->  
<properties>
    <spring.version>5.0.5.RELEASE</spring.version>
</properties>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
 </dependency>

除此之外,如果在其他模块的版本号需要和管理模块的版本号一样

则可能使用${version}来替换


六、版本管理

  • SNAPSHOT(快照版)
    • 项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
    • 快照版本会随着开发的进展不断更新 RELEASE(发布版本)
  • RELEASE(发布版本)
    • 项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

七、资源管理

Maven除了能管理自身的pom文件的一些版本号,还可以管理其他文件的一些属性

在这里插入图片描述


1、实现流程

  1. 自定义属性(这里以jdbc的url为例)

    在这里插入图片描述

  1. 配置资源文件对应的信息(filtering为开启对配置文件资源的加载过滤)

    在这里插入图片描述

  1. 相对应的jdbc配置文件替换成el表达式

    在这里插入图片描述

注意:

  • 如果有多个模块需要修改jdbc配置文件,可以将上述的ssm_dao修改为${prohect.basedir},则当前目录下所有模块都可以配置成功

八、多环境开发配置

在我们生成一个模块的时候,在开发环境是一个配置,在服务器又是另外一个配置,那么就要适应多种环境

在这里插入图片描述


1、实现流程

  1. 创建多环境
  2. 定义具体环境
  3. 定义具体环境的唯一值
  4. 定义环境中的专用属性值

注意:

<!--设置为默认使用-->
<activation>
	<activeByDefault>true</activeByDefault>
</activation>

在这里插入图片描述

如果没有设置默认环境,则使用不同环境的时候,用maven打包或者安装的时候使用不同参数(环境 ID)来代表不同的生成环境

在这里插入图片描述


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95007.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!