Pom文件详解
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.8.7</version>
<name>ruoyi</name>
<url>http://www.ruoyi.vip</url>
<description>若依管理系统</description>
<properties>
<ruoyi.version>3.8.7</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<druid.version>1.2.20</druid.version>
</properties>
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.15</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>ruoyi-admin</module>
</modules>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
这份 XML 文件是 Maven 项目的核心配置文件 pom.xml,用于定义项目的基本信息、依赖管理、模块结构、构建配置等。下面对每个标签的作用进行详细解释:
1. 根标签 <project>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- 作用:整个
pom.xml的根标签,声明了 Maven POM 的版本(4.0.0)和 XML 命名空间,确保 Maven 能正确解析配置。 xmlns:指定 XML 命名空间,标识这是一个 Maven 项目配置。xsi:schemaLocation:指定 XML schema 的位置,用于验证配置文件的语法正确性。
2. 基础信息标签
<modelVersion>4.0.0</modelVersion>
- 作用:指定 POM 模型的版本,Maven 3 及以上版本必须使用
4.0.0。
<groupId>com.ruoyi</groupId>
- 作用:定义项目的组织/公司标识,通常使用反向域名(如
com.公司名),用于区分不同组织的项目。
<artifactId>ruoyi</artifactId>
- 作用:定义项目的唯一标识符(项目名),与
groupId结合构成 Maven 依赖的唯一坐标(groupId:artifactId:version)。
<version>3.8.7</version>
- 作用:指定项目的版本号,此处为若依框架的版本
3.8.7。
<name>ruoyi</name>
- 作用:项目的显示名称,用于 Maven 报告或 IDE 中展示。
<url>http://www.ruoyi.vip</url>
- 作用:项目的官方网站地址,可选配置。
<description>若依管理系统</description>
- 作用:项目的描述信息,用于说明项目的用途。
3. 属性配置 <properties>
<properties>
<ruoyi.version>3.8.7</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<druid.version>1.2.20</druid.version>
</properties>
- 作用:定义全局属性,可在整个
pom.xml中通过${属性名}引用,便于统一管理版本号、编码等配置。 - 示例:
${druid.version}会被替换为1.2.20,修改此处可统一更新依赖版本。
4. 依赖管理 <dependencyManagement>
<dependencyManagement>
<dependencies>
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.15</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
- 作用:统一管理依赖版本,避免子模块中重复声明版本号,减少冲突。
- 注意:
dependencyManagement仅声明依赖版本,不会实际引入依赖;子模块需通过<dependencies>显式声明依赖(可省略版本号,继承此处配置)。 - 内部标签说明:
<type>pom</type>:表示依赖的类型是 POM 文件(通常用于引入父依赖或依赖集合)。<scope>import</scope>:仅用于type=pom的依赖,将目标 POM 中的依赖配置导入当前项目(此处导入 Spring Boot 的默认依赖管理)。
5. 模块配置 <modules>
<modules>
<module>ruoyi-admin</module>
</modules>
- 作用:声明当前项目(父项目)包含的子模块,
module的值为子模块的目录名(相对路径)。 - 此处表示当前项目包含
ruoyi-admin子模块(若依的后台管理模块),Maven 构建时会自动构建所有子模块。
6. 打包类型 <packaging>pom</packaging>
- 作用:指定项目的打包类型,此处为
pom,表示当前项目是父项目(用于管理子模块,不生成可执行文件)。 - 常见打包类型:
jar(默认,Java 项目)、war(Web 项目)、pom(父项目)。
7. 构建配置 <build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
- 作用:配置项目的构建行为,如编译、打包、测试等。
<plugins>:声明构建过程中使用的插件。maven-compiler-plugin:Maven 编译插件,用于指定 Java 编译版本和编码。<source>:源代码编译时使用的 Java 版本(此处为 1.8)。<target>:编译后生成的 class 文件兼容的 Java 版本(此处与源代码版本一致)。<encoding>:指定源代码编码(UTF-8),避免中文乱码。
8. 仓库配置 <repositories> 和 <pluginRepositories>
仓库配置 <repositories>
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
- 作用:指定 Maven 下载依赖的仓库地址(默认从 Maven 中央仓库下载,此处配置为阿里云仓库,速度更快)。
- 标签说明:
<id>:仓库唯一标识(自定义,需唯一)。<name>:仓库名称(描述用)。<url>:仓库的实际地址(阿里云公共仓库)。<releases><enabled>true</enabled></releases>:允许从该仓库下载正式版依赖。
插件仓库 <pluginRepositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
- 作用:指定 Maven 下载插件的仓库地址(插件与普通依赖的仓库可分开配置,此处复用阿里云仓库)。
<snapshots><enabled>false</enabled></snapshots>:禁止从该仓库下载快照版(开发中的不稳定版本)插件。
总结
这份 pom.xml 是若依(RuoYi)项目的父 POM,主要作用是:
- 定义项目基本信息和全局属性。
- 统一管理依赖和插件的版本,避免冲突。
- 声明子模块(如
ruoyi-admin),实现多模块项目的聚合。 - 配置阿里云仓库加速依赖和插件的下载。
- 指定 Java 编译版本和编码,确保项目环境一致性。
子模块(如 ruoyi-admin)的 pom.xml 会通过 <parent> 标签继承此父 POM 的配置,减少重复代码。
浙公网安备 33010602011771号