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内。
    • 聚合和继承都属于设计模块,并无实际的代码。
  • 不同点
    • 聚合是在聚合工程中配置关系,聚合可以感知参与聚合的模块有哪些。
    • 继承是在子模块中配置关系,父模块无法感知哪些模块继承了自己。
相关推荐
笃行3501 小时前
SQLServer数据迁移之后,那张报表还能不能秒出
后端
LucianaiB1 小时前
别再被 AI 骗了:我把腾讯云 4 个 Skill 做成了个「AI 打假侦探」,过程的一个小配置坑惨了我
后端
candyTong2 小时前
Claude Code 如何恢复一段会话
后端·架构·ai编程
En^_^Joy3 小时前
Django项目配置全攻略:settings配置文件
后端·python·django
IT_陈寒6 小时前
Python线程池吞了异常还不告诉我,这谁顶得住啊
前端·人工智能·后端
小强库计算机毕业设计6 小时前
SpringBoot+Vue3 学生宿舍管理系统实战
java·spring boot·后端·vue·学生宿舍管理系统
小狼1836 小时前
实践6|SDD 实战:AI 写的规格被推翻了四次
后端·claude
篮框坏了6 小时前
"DeepSeek Harness 实测:一毛钱干三活,但默认配置是个坑"
后端·ai编程
jobBridge216 小时前
大模型到底是怎么"想"的?我把 Transformer 拆开,发现它其实是个"接词狂魔"
人工智能·后端·编程语言
唐青枫7 小时前
看懂内存地址之后,才算真正入门 Zig:指针、切片与实战
后端