记录使用ruoyi-flowable开发部署中出现的问题以及解决方法
1.打包
开发初步完后,打包部署测试,首先记录一下部署方式。
ruoyi是maven分模块开发的模式,想要打包成war,首先ruoyi-admin模块的pom.xml,将原来的jar修改为war,代码如下:
<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>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.9</version></parent><modelVersion>4.0.0</modelVersion><packaging>war</packaging><artifactId>ruoyi-admin</artifactId><description>web服务入口</description><dependencies><!-- spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 表示依赖不会传递 --></dependency><!-- swagger3--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId></dependency><!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 --><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.6.2</version></dependency><!-- Mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 核心模块--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId></dependency><!-- 定时任务--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-quartz</artifactId></dependency><!-- 代码生成--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-generator</artifactId></dependency><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-flowable</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.5.15</version><configuration><fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.1.0</version> <configuration><failOnMissingWebXml>false</failOnMissingWebXml><warName>${project.artifactId}</warName></configuration> </plugin> </plugins><finalName>${project.artifactId}</finalName></build>
</project>
我使用的idea2020社区版,在右侧的maven中我习惯先点击清理,然后点击打包。如图:
打包完成后,生成ruoyi-admin.war
然后打包前端,在命令行中输入:
npm run build:prod
前端打包完成后的程序都在dist文件夹中。
2.部署
后端部署,先把ruoyi-admin.war重命名为prod-api.war,然后拷贝到tomcat下面的webapps文件夹中。
然后把前端打包好的dist中的所有文件都拷贝到tomcat/webapps/root文件夹中。
需要注意的是前端在root文件中要新建一个WEB-INF的空文件夹,否则前端无法启动。
我是在华为云端部署,同步好数据库后,正常的若依框架开发的系统就可以正常启动了,但这次又集成了flowable,启动出现了问题。
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'flowableAppEngine': FactoryBean threw exception on object creation; nested exception is org.flowable
.common.engine.api.FlowableException: couldn't upgrade db schema: alter table ACT_RU_VARIABLE
add column SCOPE_ID_ varchar(255)
flowable启动失败解决方法
查询了资料,因为flowable在检索默认数据库表的时候,mysql默认是按照表名大写去查表,所以造成查不到,但这个问题在开发环境不存在。
按照资料中的解决方案,找到mysql安装目录下的my.cnf
编辑或增加
lower_case_table_names=1
我的my.cnf是空的,增加这一句,重启mysql服务。系统正常启动。
第一次学习使用ruoyi-flowable框架,记录一下,框架挺好用,非常感谢框架的作者们!!