maven的pom文件解读

发布于:2024-10-17 ⋅ 阅读:(16) ⋅ 点赞:(0)
<?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>

    <!-- 必填项 -->
    <!-- 项目的组名,一般是翻转的域名,如域名是bk.com -->
    <groupId>com.bk</groupId>
    <!-- 项目的唯一标识,一般是项目名 -->
    <artifactId>bk</artifactId>
    <!-- 项目版本号 -->
    <version>1.0.0</version>

    <!-- 非必填 -->
    <!-- 描述项目的名称 -->
    <name>book</name>
    <!-- 具体的项目描述 -->
    <description>图书管理系统</description>

    <!-- 用来定义和管理项目中所需要的属性,可以用来管理依赖的版本,方便统一管理,一处修改,多处生效 -->
    <properties>
        <!-- 定义一个属性bk.version,引用的时候使用${bk.version}来使用 -->
        <bk.version>1.0.0</bk.version>
        <!-- 定义一个属性spring.boot.version -->
        <spring.boot.version>2.7.18</spring.boot.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!-- 依赖声明 -->
    <dependencyManagement>
        <dependencies>
            <!-- 引入SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <!-- 使用properties中定义的spring-boot_version -->
                <version>${spring.boot.version}</version>
                <!-- 依赖的类型,默认是jar,但是在dependencyManagement中,用于管理其他模块的依赖版本,则通常是pom -->
                <type>pom</type>
                <!-- type为pom的时候,scope为import -->
                <scope>import</scope>
                <!-- 排除依赖 -->
                <exclusions>
                    <!-- 排除spring-boot-dependencies中的logback-classic依赖 -->
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- 引入一个本地依赖 -->
            <dependency>
                <groupId>com.baiwang.bop</groupId>
                <artifactId>sdk-outer</artifactId>
                <version>3.4.472</version>
                <scope>system</scope>
                <!-- 
                    ${project.basedir}:当前pom所在的模块的路径
                    当前pom所在的模块的父目录下的lib目录下的com_baiwang_bop_sdk_outer_3_4_483.jar
                 -->
                <systemPath>${project.basedir}/../lib/com_baiwang_bop_sdk_outer_3_4_483.jar</systemPath>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <packaging>pom</packaging>
    <!-- 引入子模块 -->
    <modules>
        <module>bk-admin</module>
        <module>bk-framework</module>
    </modules>

    <build>
        <plugins>
            <!-- 配置Spring Boot Maven插件 -->
            <plugin>
                <!-- 指定插件的组ID -->
                <groupId>org.springframework.boot</groupId>
                <!-- 指定插件的Artifact ID -->
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 配置插件的行为 -->
                <configuration>
                    <!-- 设置是否包含scope为system的第三方Jar包 -->
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
            <!-- 插件 -->
            <plugin>
                <!-- 插件所在的组织或项目组 -->
                <groupId>org.apache.maven.plugins</groupId>
                <!-- 插件的具体名称 -->
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- 插件的版本号 -->
                <version>3.13.0</version>
                <!-- 配置项 -->
                <configuration>
                    <!-- 编译Java源代码时使用DK 21 -->
                    <release>21</release>
                    <!-- 指定编码格式 -->
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <!-- 定义清理插件 -->
                <!-- 插件所在的组织或项目组 -->
                <groupId>org.apache.maven.plugins</groupId>
                <!-- 插件的具体名称 -->
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <!-- filesets: 定义一组文件集合,这些文件或目录将被清理操作影响。 -->
                    <filesets>
                        <!-- fileset: 文件集定义,可以包含多个属性来精确控制哪些文件将被处理。 -->
                        <fileset>
                            <!-- directory: 指定文件集中的具体目录路径,这里指定了日志目录,意味着该目录下的所有内容都将在执行清理命令时被删除。-->
                            <directory>logs</directory>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
            <!-- 配置单元测试的插件 -->
            <plugin>
                <!-- 指定插件的组ID -->
                <groupId>org.apache.maven.plugins</groupId>
                <!-- 指定插件的Artifact ID -->
                <artifactId>maven-surefire-plugin</artifactId>
                <!-- 指定插件的版本号 -->
                <version>3.4.0</version>
                <!-- 配置插件的行为 -->
                <configuration>
                    <!-- 设置跳过执行单元测试 -->
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!-- Maven在构建项目时可以从这个仓库下载依赖库,配置Maven项目的仓库 -->
    <repositories>
        <repository>
            <!-- 仓库的唯一标识符 -->
            <id>public</id>
            <!-- 仓库名称 -->
            <name>aliyun nexus</name>
            <!-- 仓库的URL地址 -->
            <url>https://maven.aliyun.com/repository/public</url>
            <!-- 配置仓库的发布版本 -->
            <releases>
                <!-- 启用发布版本 -->
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>


    <!-- 配置Maven项目的插件仓库,Maven只会从这个仓库下载发布版本的插件,而不会下载快照版本的插件 -->
    <pluginRepositories>
        <pluginRepository>
            <!-- 仓库的唯一标识符 -->
            <id>public</id>
            <!-- 仓库名称 -->
            <name>aliyun nexus</name>
            <!-- 仓库的URL地址 -->
            <url>https://maven.aliyun.com/repository/public</url>
            <!-- 配置仓库的发布版本 -->
            <releases>
                <!-- 启用发布版本 -->
                <enabled>true</enabled>
            </releases>
            <!-- 配置仓库的快照版本 -->
            <snapshots>
                <!-- 禁用快照版本 -->
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>


</project>