欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Easylive】Maven 多模块项目的 POM 文件配置详解

【Easylive】Maven 多模块项目的 POM 文件配置详解

2025/4/3 7:08:12 来源:https://blog.csdn.net/m0_47352999/article/details/146883758  浏览:    关键词:【Easylive】Maven 多模块项目的 POM 文件配置详解

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版
这个文件是一个 Maven 的 POM (Project Object Model) 文件,它是 Maven 项目的核心配置文件,用于定义项目的结构、依赖关系、构建配置等信息。下面是对这个文件中各个部分的详细解释:


1. 基本配置

<project xmlns="http://maven.apache.org/POM/4.0.0" ...><modelVersion>4.0.0</modelVersion><groupId>com.easylive</groupId><artifactId>easylive</artifactId><version>1.0</version><packaging>pom</packaging>

modelVersion: 指定 POM 模型的版本(固定为 4.0.0)。
groupId: 项目的组织标识(通常是公司或组织的域名反转,如 com.easylive)。
artifactId: 项目的唯一标识符(如 easylive)。
version: 项目的版本号(如 1.0)。
packaging: 项目的打包类型,这里是 pom,表示这是一个多模块项目的父 POM。


2. 父项目继承

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/>
</parent>

• 继承 Spring Boot 的父 POM,提供了默认的依赖管理、插件配置等。
relativePath 为空表示从本地仓库或远程仓库查找父 POM。


3. 模块定义

<modules><module>easylive-common</module><module>easylive-admin</module><module>easylive-web</module>
</modules>

• 定义子模块(多模块项目):
easylive-common: 公共模块(如工具类、通用配置)。
easylive-admin: 后台管理模块。
easylive-web: 前端或 API 模块。


4. 全局属性

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><skipTests>true</skipTests><!-- 依赖版本号 --><springboot.version>2.7.18</springboot.version><mybatis.version>1.3.2</mybatis.version>...
</properties>

编码和 JDK 版本:指定源码编码为 UTF-8,编译使用 JDK 1.8。
跳过测试skipTests=true 表示构建时跳过单元测试。
依赖版本号:集中管理所有依赖的版本号,便于统一升级。


5. 依赖管理

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${springboot.version}</version><exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions></dependency>...</dependencies>
</dependencyManagement>

作用:统一管理子模块的依赖版本,避免版本冲突。
特点
• 子模块使用时无需指定版本号(继承父 POM 的版本)。
• 可以通过 <exclusions> 排除传递性依赖(如排除默认的 Logback 日志库)。


6. 关键依赖说明

Spring Boot Starter Web: 提供 Web 开发支持(如 Spring MVC)。
MyBatis Starter: 集成 MyBatis 和 Spring Boot。
MySQL Connector: MySQL 数据库驱动。
Logback: 日志框架。
Lombok: 简化 Java 代码(如自动生成 Getter/Setter)。
Fastjson: 阿里巴巴的 JSON 处理库。
Apache Commons: 常用工具库(如 commons-lang3commons-io)。
Elasticsearch: 全文搜索引擎支持。
Easy Captcha: 验证码生成库。


7. 文件的作用

  1. 多模块管理:通过 <modules> 定义子模块,统一构建。
  2. 依赖版本控制:通过 <dependencyManagement> 集中管理依赖版本。
  3. 继承 Spring Boot 默认配置:简化 Spring Boot 项目的配置(如插件、默认依赖)。
  4. 统一构建规范:指定 JDK 版本、编码等全局配置。

补充说明

• 子模块的 POM 文件会继承父 POM 的配置,无需重复定义版本号。
• 实际依赖需要子模块显式声明(父 POM 仅管理版本)。
• 如果某个子模块需要特殊配置,可以在其 POM 中覆盖父 POM 的设置。

这个文件是项目的核心配置,确保了依赖一致性和构建标准化。

这几个依赖库是 Java 开发中常用的工具包,各自有不同的功能和应用场景。以下是它们的详细说明:


1. commons-io(Apache Commons IO)

作用:提供更强大、易用的 I/O(输入/输出)操作工具类
典型用途
• 文件/目录的复制、删除、移动(FileUtils)。
• 流(Stream)的高效读写(IOUtils)。
• 文件监控(如 FileAlterationMonitor)。
示例代码

import org.apache.commons.io.FileUtils;
// 复制文件
FileUtils.copyFile(srcFile, destFile);
// 读取文件内容为字符串
String content = FileUtils.readFileToString(file, "UTF-8");

版本说明
• 当前 POM 中版本为 2.5(较旧,最新版为 2.15.1)。


2. commons-codec(Apache Commons Codec)

作用:提供常见的 编码/解码工具,如 Base64、MD5、SHA 等。
典型用途
• 加密哈希(DigestUtils.md5Hex())。
• Base64 编码/解码(Base64.encodeBase64String())。
• URL 编码/解码。
示例代码

import org.apache.commons.codec.digest.DigestUtils;
// 生成 MD5 哈希
String md5Hash = DigestUtils.md5Hex("HelloWorld");

版本说明
• 当前 POM 中版本为 1.9(较旧,最新版为 1.16.1)。


3. commons-lang3(Apache Commons Lang3)

作用:扩展 Java 标准库的 工具类,尤其是 java.lang 包的增强。
典型用途
• 字符串处理(StringUtils.isEmpty())。
• 数组/对象操作(ArrayUtils, ObjectUtils)。
• 日期格式化(DateUtils)。
• 随机数生成(RandomStringUtils)。
示例代码

import org.apache.commons.lang3.StringUtils;
// 检查字符串是否为空(包括 null 和空字符串)
boolean isEmpty = StringUtils.isEmpty(str);

版本说明
• 当前 POM 中版本为 3.4(较旧,最新版为 3.14.0)。


4. aspectjweaver(AspectJ 库)

作用:支持 面向切面编程(AOP),用于解耦横切关注点(如日志、事务)。
典型用途
• 配合 Spring AOP 实现方法拦截。
• 定义切面(@Aspect)、切入点(@Pointcut)、通知(@Before, @After 等)。
示例代码

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;@Aspect
public class LoggingAspect {@Before("execution(* com.example.service.*.*(..))")public void logBefore() {System.out.println("方法执行前记录日志");}
}

版本说明
• 当前 POM 中版本为 1.9.3(较旧,最新版为 1.9.20)。


为什么需要这些库?

  1. 避免重复造轮子:提供现成的工具方法,减少手写通用代码。
  2. 标准化:Apache 和 Eclipse 维护的库,稳定性和性能有保障。
  3. 与 Spring 生态集成:如 aspectjweaver 是 Spring AOP 的底层依赖。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词