版本: 5.6 JDK版本: JDK17 部署模式: 单体

在基于 Spring Boot 构建的 Pigx-boot 项目中,模块化开发使得系统的可扩展性和功能性大大提升。然而,默认情况下,单体启动会将所有子模块加载到 pigx-boot,导致类加载、扫描等操作非常缓慢,尤其是在开发过程中影响效率。因此,在开发过程中,我们只需要保证与当前业务相关的模块(例如 authupms 等)加载,打包时再加载全部模块。这篇文章将为你提供通过 profile 技巧来简化开发与打包过程,避免手动修改 pom.xml 文件。

1. 问题描述:单体启动的加载效率低下

在开发过程中,pigx-boot 项目会默认加载所有子模块。随着项目功能的增加,模块数量也随之增加,导致项目启动时的类加载和扫描过程变得越来越缓慢,影响开发效率。

为了优化开发体验,我们可以选择只加载当前开发工作所需的模块,而无需每次启动时加载整个项目所有模块,这样可以大幅减少开发中的启动时间。

2. 解决方案:通过 Profile 进行模块化管理

为了实现开发环境下的快速启动和生产环境下的完整打包,我们可以利用 Maven 的 profiles 功能。profiles 允许我们定义不同的构建环境,基于不同的场景(如开发、测试、生产),选择性加载所需模块。

2.1 开发环境只加载业务相关模块

首先,在 pigx-boot/pom.xml 文件中,我们可以通过删除不必要的模块依赖,确保开发环境下只加载当前业务相关的模块,如 authupms 模块。这样在开发时,你只需要处理与这些模块相关的依赖和类加载,减少项目启动时间。

pigx-boot/pom.xml 删除其他不必要的模块,仅保留必要的模块

<modules>
    <module>pigx-auth</module>
    <module>pigx-upms</module>
    <!-- ,其他模块在生产打包时再引入 -->
</modules>

2.2 生产环境打包所有模块

为了避免每次打包时都需要手动修改 pom.xml 文件,我们可以通过 profiles 来动态加载依赖模块。在 pom.xml 中定义一个 prod profile,用于生产环境下自动加载所有模块。

pigx-boot/pom.xml 添加如下

<profiles>
    <profile>
        <id>prod</id>
        <dependencies>
            <!-- 代码生成模块 -->
            <dependency>
                <groupId>com.pig4cloud</groupId>
                <artifactId>pigx-codegen</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!-- 其他需要的模块依赖 -->
            ...
        </dependencies>
    </profile>
</profiles>

通过这种方式,在开发时只加载基础模块,打包时使用 prod profile 加载所有模块,避免手动修改 pom.xml 文件。

3. 部署命令优化

在生产环境部署时,你可以使用以下命令来激活 prod profile,从而打包整个项目:

mvn clean install -T 4 -Pboot,prod

-T 4 代表使用 4 线程并行编译,-Pboot,prod 表示激活 bootprod profiles。这样既能提高构建速度,又能确保打包时包含所有生产所需模块。

4. 总结

通过灵活运用 Maven 的 profiles 功能,我们能够有效管理 pigx-boot 项目的模块加载,避免开发过程中加载过多无关模块,提升开发效率。同时,通过定义 prod profile,我们可以在生产环境下方便地打包所有模块,减少手动配置和修改 pom.xml 的繁琐步骤。

这种方法为日常开发和生产部署提供了很大的灵活性和便利性,是在多模块项目中提高效率的一个实用技巧。希望这篇分享能为你在 Pigx-boot 项目的开发和部署过程中带来启发与帮助。