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,主要作用是:

  1. 定义项目基本信息和全局属性。
  2. 统一管理依赖和插件的版本,避免冲突。
  3. 声明子模块(如 ruoyi-admin),实现多模块项目的聚合。
  4. 配置阿里云仓库加速依赖和插件的下载。
  5. 指定 Java 编译版本和编码,确保项目环境一致性。

子模块(如 ruoyi-admin)的 pom.xml 会通过 <parent> 标签继承此父 POM 的配置,减少重复代码。

posted @ 2025-11-01 19:13  Rsun  阅读(4)  评论(0)    收藏  举报  来源