当前位置: 首页 > news >正文

【JavaWeb后端学习笔记】Maven项目管理

Maven

  • 1、分模块设计
  • 2、Maven继承
    • 2.1 继承关系
    • 2.2 版本锁定
  • 3、Maven聚合
  • 4、聚合与继承的关系

1、分模块设计

如果一个项目中含有大量的功能模块。可以考虑将这些功能分模块设计,逐一进行开发。例如将公共类可以定义在一个项目中,将通用工具类也放在一个项目中,其他业务模块需要使用这些类或者工具,只需要在pom文件中引入它们的依赖坐标。

<dependencies><dependency><groupId>组织ID</groupId><artifactId>项目</artifactId><version>版本</version></dependency>...<dependency><groupId>组织ID</groupId><artifactId>项目</artifactId><version>版本</version></dependency>
</dependencies>

2、Maven继承

2.1 继承关系

在一个大型项目中,子模块非常多,如果这些子模块都需要一个共同的依赖,那么可以给这些子模块的父工程的pom文件中加入这项依赖,子模块中就不需要再加这个依赖了。这是因为子模块继承了父工程的pom文件中的依赖。

Maven继承的作用就是简化依赖配置,统一管理依赖;

指定继承关系,需要在子工程的pom文件中加入

<parent><!-- 父工程坐标 2.3.3--><groupId>组织ID</groupId><artifactId>项目</artifactId><version>版本</version><relativePath>父工程pom文件相对路径</relativePath>
</parent>

父工程需要指定打包方式为pom。在父工程pom文件中加:

<packaging>pom</packaging>

注意,如果父工程与子工程都引入了同一个依赖的不同版本,以子工程的为准。

2.2 版本锁定

在Maven中,可以在父工程的pom文件中通过dependencyManagement标签来统一管理依赖版本。

例如在一个大型项目中,有部分子模块引入了同一个依赖,当要改变依赖版本时,则需要在所有子模块中查找是否引入了这个依赖,这个过程相当繁琐。这时就可以通过Maven的版本锁定来解决这个问题。

子模块引入依赖时不指定版本,只需指定groupId和artifactId。把版本交给父工程管理。
在父工程中使用dependencyManagement标签管理版本:

<dependencyManagement><dependencies><dependency><groupId>组织ID</groupId><artifactId>项目</artifactId><version>指定版本</version> </dependency>...</dependencies>
</dependencyManagement>

dependencyManagement标签只会管理依赖版本,不会直接把依赖加入进来。

自定义属性与属性引用
自定义属性与属性引用方便集中统一管理依赖版本。
通过properties标签自定义属性:

<!-- 自定义属性 -->
<properties><jjwt.version>0.9.1</jjwt.version><lombok.version>1.18.24</lombok.version>
</properties>

通过${…}引用属性:

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jwtt.version}</version> 
</dependency>

3、Maven聚合

在分模块开发时,如果需要打包一个项目,那么这个项目依赖的其他子项目需要先安装在Maven本地,父工程也需要安装在本地,再对此项目进行打包操作。这个操作比较复杂。所以Maven聚合实现一键构建,一键打包,一键运行。

聚合,也就是将多个模块组织成一个整体,同时进行项目构建。

聚合工程:一个不具有业务功能的“空”工程(有且仅有一个pom文件)。一般父工程会同时起到聚合工程的作用。
聚合工程的作用就是快速构建项目,无需根据依赖关系手动构建,直接在聚合工程上构建即可。

Maven中通过modules标签设置当前聚合工程所包含的子模块名称。

<!--- 聚合 --->
<modules><module> 子模块相对路径 </module><module>../prj_utils</module><module>../prj_common</module>...
</modules>

4、聚合与继承的关系

  1. 作用:
    • 聚合用于快速构建项目
    • 继承用于简化依赖配置,统一管理依赖
  2. 相同点 :
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中。
    • 聚合与继承均属于设计型模块,并无实际的模块内容
  3. 不同点:
    • 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
http://www.lryc.cn/news/501730.html

相关文章:

  • Docker--Docker Container(容器) 之 操作实例
  • Android前端签到web迁移到rust的axum的过程-签到的重构
  • 用户认证系统登录界面
  • Redis从入门到进阶(总结)
  • 【D3.js in Action 3 精译_044】5.1 饼图和环形图的创建(四):数据标签的添加
  • Linux的基本功能和命令
  • 【Spark】Spark的两种核心Shuffle工作原理详解
  • TCP 的文化内涵
  • ASP.NET |日常开发中读写XML详解
  • Less和SCSS,哪个更好用?
  • 第一个C++程序--(蓝桥杯备考版)
  • NanoLog起步笔记-7-log解压过程初探
  • 【MySQL 进阶之路】基础语法及优化技巧
  • 微信小程序做电子签名功能
  • PR的选择与移动
  • Linux系统 —— 进程系列 - 进程状态 :僵尸与孤儿
  • linux/centOS7用户和权限管理笔记
  • 使用C#基于ADO.NET编写MySQL的程序
  • Scala函数的泛型
  • 云轴科技ZStack亮相中国生成式AI大会上海站 展现AI Infra新势力
  • 态感知与势感知
  • 汽车零部件设计之——发动机曲轴预应力模态分析仿真APP
  • 谷歌浏览器的网页数据导出与导入方法
  • pytroch环境安装-pycharm
  • 【大模型】PostgreSQL是向量数据库吗
  • 【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码
  • Qt 联合Halcon配置
  • Vue导出报表功能【动态表头+动态列】
  • C#调用python 程序
  • day11 性能测试(4)——Jmeter使用(黑马的完结,课程不全)