Maven高级

一、分模块设计

将一个大项目分成若干个小项目,方便维护管理,也方便模块间的相互调用、资源共享。

分模块前:

分模块后:

最后要在启动类所在的模块的配置文件中引入pojo与utils两个模块的依赖。

java 复制代码
		<dependency>
            <groupId>com.ithiema</groupId>
            <artifactId>boot-tlias-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.ithiema</groupId>
            <artifactId>boot-tlias-utils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
  • 注意事项:分模块设计需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。

二、继承与聚合

(一)继承

1、继承关系

  • 概念:子工程可以继承父工程的配置信息,比如依赖、插件等。
  • 作用:简化依赖配置,统一管理依赖。
  • 实现:在父工程配置文件里注入依赖,在子工程的配置文件中的<parent>标签里导入父工程的依赖。
java 复制代码
<parent>
   <groupId>com.ithiema</groupId>
   <artifactId>web-boot-parent</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>
  • 注意:父工程的打包方式为pom,该模块不写代码,仅进行依赖管理。
java 复制代码
<packaging>pom</packaging>
  • 在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的 。

    java 复制代码
    <groupId>com.ithiema</groupId> //可以省略
    <artifactId>boot-tlias-test</artifactId>
    <version>1.0-SNAPSHOT</version>//可以省略
    <packaging>jar</packaging>

2、版本锁定

(1)在配置文件中<dependencyManagement>标签中写入要管理版本的依赖。

java 复制代码
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.9.1</version>
    </dependency>
  </dependencies>
</dependencyManagement>

(2)属性配置

  • 自定义属性
    • <properties>标签中自定义标签名和版本号。
  • 引用属性
    • <dependency>中的版本号就可以写为${自定义的属性名}

注意:<dependencyManagement>只负责依赖的版本锁定,不会产生依赖。

(3)<dependencyManagement><dependencies>的区别

  • <dependencies>是直接依赖,在父工程配置的依赖,子工程会直接继承下来。
  • <dependencyManagement>是统一管理依赖版本,不会直接产生依赖,还需要在子工程中引入所需依赖(无需指定版本)。
(二)聚合

1、介绍

  • 聚合:将多个模块组织成一个整体,同时进行项目的构建。
  • 聚合工程:一个不具有业务功能的"空"工程(有且仅有一个pom文件) 【PS:一般来说,继承关系中的父工程与聚合关系中的聚合工程是同一个】。
  • 作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)。

2、实现

  • 在聚合工程中通过<moudules>标签设置当前聚合工程所要包含的子模块的名称,在配置文件中添加如下配置:
java 复制代码
<modules>
  <module>boot-tlias-pojo</module>
  <module>boot-tlias-utils</module>
</modules>

所聚合的其他模块全部都会执行 package 指令,这就是通过聚合实现项目的一键构建(一键清理clean、一键编译compile、一键测试test、一键打包package、一键安装install等)。

3、继承与聚合对比

  • 作用:
    • 聚合用于快速构建项目
    • 继承用于简化依赖,统一管理依赖
  • 相同点
    • 聚合与继承的pom.xml文件打包方式都为pom,通常两个都制作在同一个pom内。
    • 聚合和继承都属于设计模块,并无实际的代码。
  • 不同点
    • 聚合是在聚合工程中配置关系,聚合可以感知参与聚合的模块有哪些。
    • 继承是在子模块中配置关系,父模块无法感知哪些模块继承了自己。
相关推荐
默默地离开8 分钟前
前端开发中的 Mock 实践与接口联调技巧
前端·后端·设计模式
杨荧34 分钟前
基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js
开发语言·前端·vue.js·后端·爬虫·python·信息可视化
在雨季等你1 小时前
奋斗在创业路上的老开发
android·前端·后端
转转技术团队1 小时前
游戏账号大图生成
java·后端
程序员爱钓鱼2 小时前
Go语言实战案例-批量重命名文件
后端·google·go
大熊计算机2 小时前
大模型推理加速实战,vLLM 部署 Llama3 的量化与批处理优化指南
后端
程序员爱钓鱼2 小时前
Go语言实战案例-遍历目录下所有文件
后端·google·go
喵个咪2 小时前
WSL2下的Ubuntu 24.0突然apt update报错 Could not wait for server fd 的解决方案
后端
赵星星5202 小时前
Cursor如何解决循环依赖!看完太妙了!
后端
大熊计算机3 小时前
Redis 缓存穿透/雪崩实战防御,从本地缓存到分布式锁的立体方案
后端