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内。
    • 聚合和继承都属于设计模块,并无实际的代码。
  • 不同点
    • 聚合是在聚合工程中配置关系,聚合可以感知参与聚合的模块有哪些。
    • 继承是在子模块中配置关系,父模块无法感知哪些模块继承了自己。
相关推荐
用户848508146905 分钟前
SurrealDB 快速上手教程
数据库·后端
用户61474934277427 分钟前
JeecgBoot 项目理解与使用心得
后端
ZIQ1 小时前
单机线程池任务防丢设计与实现思路
后端
MaxHua1 小时前
我用 Java 飞算 AI 快速开发了一个音频转文字工具
后端
欧阳码农1 小时前
langgraph开发Deep Research智能体-项目搭建
前端·后端·langchain
BigYe程普1 小时前
出海技术栈集成教程(二):Supabase 登录与数据库配置
前端·后端·全栈
臻实1 小时前
Win10系统Ruby+Devkit3.4.5-1安装
开发语言·后端·ruby
汪子熙1 小时前
使用 Python 解析 X.509 格式的公钥证书
后端
陈明勇1 小时前
Go 1.25 重磅发布:性能飞跃、工具升级与新一代 GC 来袭
后端·go
用户6757049885021 小时前
Cookie、Session、Token、JWT 是什么?万字图解带你一次搞懂!看完这篇,你连老奶奶都能教
后端