1、后端改造
1.1、jeecg-system-start pom.xml改造

<?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">
    <parent>
        <artifactId>jeecg-module-system</artifactId>
        <groupId>org.jeecgframework.boot</groupId>
        <version>3.8.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jeecg-system-start</artifactId>
    <!--格式设置为war-->
    <packaging>war</packaging>
    <dependencies>
   <!-- SYSTEM 系统管理模块  ,war 启动排除tomcat-embed-websocket依赖包-->
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-system-biz</artifactId>
            <version>${jeecgboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-websocket</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-module-apply</artifactId>
            <version>${jeecgboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-websocket</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- DEMO 示例模块 -->
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-module-demo</artifactId>
            <version>${jeecgboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-websocket</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
            <!-- 修改20250922-->
                    <!-- flyway 数据库自动升级 -->
            <!--        <dependency>-->
            <!--            <groupId>org.flywaydb</groupId>-->
            <!--            <artifactId>flyway-core</artifactId>-->
            <!--        </dependency>-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-properties-migrator</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
        </dependency>
        <!--引入web模块默认就是使用嵌入式的Tomcat作为Servlet容器-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--            &lt;!&ndash; 确保不是 <scope>provided</scope>,除非部署到外部 Tomcat &ndash;&gt;-->
<!--        </dependency>-->





    </dependencies>
<!--    <build>-->
<!--        <plugins>-->
<!--            <plugin>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
<!--            </plugin>-->
<!--        </plugins>-->
<!--    </build>-->
<!--下面配置删除-->
<!--    <build>-->
<!--        <resources>-->
<!--            <resource>-->
<!--                <directory>src/main/resources</directory>-->
<!--                <filtering>true</filtering>-->
<!--                <excludes>-->
<!--                    <exclude>keystore.p12</exclude>-->
<!--                </excludes>-->
<!--            </resource>-->
<!--            <resource>-->
<!--                <directory>src/main/resources</directory>-->
<!--                <filtering>false</filtering>-->
<!--                <includes>-->
<!--                    <include>keystore.p12</include>-->
<!--                </includes>-->
<!--            </resource>-->
<!--            <resource>-->
<!--                <directory>src/main/java</directory>-->
<!--                <includes>-->
<!--                    <include>**/*.xml</include>-->
<!--                    <include>**/*.json</include>-->
<!--                    <include>**/*.ftl</include>-->
<!--                </includes>-->
<!--            </resource>-->
<!--        </resources>-->
<!--        <plugins>-->
<!--            <plugin>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
<!--            </plugin>-->
<!--        </plugins>-->
<!--    </build>-->


</project>

1.2 application-dm8.yml 改造,enable改为false
SpringBoot 与Swagger版本冲突

#swagger
knife4j:
  #开启增强配置 修改20250922
  enable: false
  #开启生产环境屏蔽
  production: false
  basic:
    enable: false
    username: jeecg
    password: jeecg1314

1.3 FlywayConfig代码改造
由于去掉 flyway 数据库自动升级 jar,FlywayConfig报错
升级3.8.2版本的FlywayConfig.java

package org.jeecg.config.flyway;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import javax.sql.DataSource;

/**
 * @Description: 初始化flyway配置 修改之后支持多数据源,当出现异常时打印日志,不影响项目启动
 *
 * @author: wangshuai
 * @date: 2024/3/12 10:03
 */
@Slf4j
@Configuration
public class FlywayConfig {

    @Autowired
    private DataSource dataSource;

    @Autowired
    private Environment environment;

    /**
     * 是否开启flyway
     */
    @Value("${spring.flyway.enabled:false}")
    private Boolean enabled;

    /**
     * 编码格式,默认UTF-8
     */
    @Value("${spring.flyway.encoding:UTF-8}")
    private String encoding;

    /**
     * 迁移sql脚本文件存放路径,官方默认db/migration
     */
    @Value("${spring.flyway.locations:classpath:flyway/sql/mysql}")
    private String locations;

    /**
     * 迁移sql脚本文件名称的前缀,默认V
     */
    @Value("${spring.flyway.sql-migration-prefix:V}")
    private String sqlMigrationPrefix;

    /**
     * 迁移sql脚本文件名称的分隔符,默认2个下划线__
     */
    @Value("${spring.flyway.sql-migration-separator:__}")
    private String sqlMigrationSeparator;

    /**
     * 文本前缀
     */
    @Value("${spring.flyway.placeholder-prefix:#(}")
    private String placeholderPrefix;

    /**
     * 文本后缀
     */
    @Value("${spring.flyway.placeholder-suffix:)}")
    private String placeholderSuffix;

    /**
     * 迁移sql脚本文件名称的后缀
     */
    @Value("${spring.flyway.sql-migration-suffixes:.sql}")
    private String sqlMigrationSuffixes;

    /**
     * 迁移时是否进行校验,默认true
     */
    @Value("${spring.flyway.validate-on-migrate:true}")
    private Boolean validateOnMigrate;

    /**
     * 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
     */
    @Value("${spring.flyway.baseline-on-migrate:true}")
    private Boolean baselineOnMigrate;

    /**
     * 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库,非常重要!!!
     */
    @Value("${spring.flyway.clean-disabled:true}")
    private Boolean cleanDisabled;

//    @Bean
//    public void migrate() {
//        if(!enabled){
//            return;
//        }
//
//        DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource;
//        Map<String, DataSource> dataSources = ds.getDataSources();
//        dataSources.forEach((k, v) -> {
//            if("master".equals(k)){
//                String databaseType = environment.getProperty("spring.datasource.dynamic.datasource." + k + ".url");
//                if (databaseType != null && databaseType.contains("mysql")) {
//                    try {
//                            Flyway flyway = Flyway.configure()
//                                    .dataSource(v)
//                                    .locations(locations)
//                                    .encoding(encoding)
//                                    .sqlMigrationPrefix(sqlMigrationPrefix)
//                                    .sqlMigrationSeparator(sqlMigrationSeparator)
//                                    .placeholderPrefix(placeholderPrefix)
//                                    .placeholderSuffix(placeholderSuffix)
//                                    .sqlMigrationSuffixes(sqlMigrationSuffixes)
//                                    .validateOnMigrate(validateOnMigrate)
//                                    .baselineOnMigrate(baselineOnMigrate)
//                                    .cleanDisabled(cleanDisabled)
//                                    .load();
//                            flyway.migrate();
//                            log.info("【升级提示】平台集成了MySQL库的Flyway,数据库版本自动升级! ");
//                    } catch (FlywayException e) {
//                        log.error("【升级提示】flyway执行sql脚本失败", e);
//                    }
//                } else {
//                    log.warn("【升级提示】平台只集成了MySQL库的Flyway,实现了数据库版本自动升级! 其他类型的数据库,您可以考虑手工升级~");
//                }
//            }
//        });
//    }
}

打包生成jeecg-system-start-3.8.0.war
重命名jeecg-boot.war,复制到 apache-tomcat-9.0.99\webapps

cp jeecg-system-start-3.8.0.war E:\JeecgBoot-master\deploy\apache-tomcat-9.0.99-windows-x64\apache-tomcat-9.0.99\webapps\ROOT\jeecg-boot.war

在这里插入图片描述

2、前端改造
.env.production 修改
主要修改VITE_GLOB_API_URL、VITE_GLOB_DOMAIN_URL
增加VITE_LEGACY = true

# 是否启用mock
VITE_USE_MOCK = false

# 发布路径
VITE_PUBLIC_PATH = /

# 是否启用gzip或brotli压缩
# 选项值: gzip | brotli | none
# 如果需要多个可以使用“,”分隔
VITE_BUILD_COMPRESS = 'gzip'

# 使用压缩时是否删除原始文件,默认为false
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false

#后台接口父地址(必填)
VITE_GLOB_API_URL=http://localhost:8080/jeecg-boot

#后台接口全路径地址(必填)
#VITE_GLOB_DOMAIN_URL=http://jeecg-boot-system:8080/jeecg-boot
VITE_GLOB_DOMAIN_URL=http://localhost:8080/jeecg-boot
# 接口父路径前缀
VITE_GLOB_API_URL_PREFIX=

#即可打包出兼容旧版浏览器的代码
VITE_LEGACY = true

# 填写后将作为乾坤子应用启动,主应用注册时AppName需保持一致(放开 VITE_GLOB_QIANKUN_MICRO_APP_NAME 参数表示jeecg-vue3将以乾坤子应用模式启动)
#VITE_GLOB_QIANKUN_MICRO_APP_NAME=jeecg-vue3
# 作为乾坤子应用启动时必填,需与qiankun主应用注册子应用时填写的 entry 保持一致
#VITE_GLOB_QIANKUN_MICRO_APP_ENTRY=//qiankun.boot3.jeecg.com/jeecg-vue3

# 全局隐藏哪些布局。可选属性:sider,header,multi-tabs;多个用逗号隔开
#VITE_GLOB_HIDE_LAYOUT_TYPES=sider,header,multi-tabs

打包前端

pnpm run build

生成dist文件夹
打包war

cd ./dist
jar -cvf ROOT.war *

复制到 apache-tomcat-9.0.99\webapps

cp ROOT.war apache-tomcat-9.0.99\webapps

3、以tomcat9.0.99 为容器发布
下载:tomcat9.0.99
在这里插入图片描述
配置manager-gui 角色
修改apache-tomcat-9.0.99\conf\tomcat-users.xml

<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
<user username="robot" password="robot" roles="manager-script"/>

启动tomcat
在这里插入图片描述
4、关掉swagger-ui

#关掉swagger-ui
springdoc:
  swagger-ui:
    enabled: false

在这里插入图片描述

注意jar包启动时候带参数:

java -jar app.jar --springdoc.swagger-ui.enabled=false

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐