SpringBoot2.0.0整合Activiti6.0遇到的bug

前言

最近断断续续整合SpringBoot2.0和Activiti6.0终于到了尾声,结果最后遇到了两个问题半天解决不了,昨天圣诞节晚上弄了很久,记录一下。

问题

第一个问题是我的maven项目用mvn命令启动,刚开始使用mvn clean spring-boot:run启动一点问题都没有,后来想测试一下用内嵌的tomcat启动mvn clean tomcat7:run,编译正常通过BUILD SUCCESS,但是项目不运行。。。很郁闷。

然后百度了很久,尝试了各种方式终于实出来了。需要在tomcat的maven插件中增加true,那么为什么呢?

因为tomcat启动默认会去找打包好的war包来启动,而我的项目还没有打成war包,所以添加让tomcat启动过程中忽略war包就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<ignorePackaging>true</ignorePackaging>
<mainClass>com.imooc.workflow.WorkflowApplication</mainClass>
<path>/wf</path>
<port>8080</port>
<protocol>org.apache.coyote.http11.Http11NioProtocol</protocol>
<systemProperties>
<com.sun.management.jmxremote.port>4000</com.sun.management.jmxremote.port>
</systemProperties>
</configuration>
</plugin>

第二个问题是liquibase引起的一系列问题。因为我的项目是springboot的,然后呢要使用activiti需要生成28张activiti这个框架要用到的表,我就在application.yml文件里面配置了generate-ddl: true用于项目启动的时候自动生成表,同时呢因为项目的UI模块使用的activiti6.0源码里面的子模块activiti-ui修改而成的依赖包,这个UI模块自己也会生成几张表并且是用到了liquibase的。

我就在application.yml文件里面开启了liquibase相关配置并关闭了自动生成表的配置。

1
2
3
4
5
6
7
8
9
10
jpa:
properties:
hibernate:
cache:
use_second_level_cache: false
open-in-view: true
generate-ddl: false
liquibase:
enabled: true
change-log: classpath:META-INF/liquibase/activiti-app-db-changelog.xml

删除之前activiti-ui模块生成的几张表,重新启动项目。这个时候可能会报错,我当时忘截图了可以大致说一下。liquibase的change-log文件里面会有建表语句,其中像ACT_WO_RELATED_CONTENT等几张表的某些字段的类型被设置为timestamp(6),然后在建表的时候就会报错。

我把建表语句直接拿到navicat执行也是报错,指向了类型为timestamp(6)的字段,于是我把后面的精度6去掉,就成功了。然后查询资料得知,mysql版本 < 5.6,不支持毫秒精度设置。。。呵呵。

好,问题基本解决,说到问题,我就想起了西游记中师徒四人遇到的种种困难,明年年初,中美合拍的西游记即将正式开机,我继续扮演美猴王孙悟空,我会用美猴王艺术形象努力创造一个正能量的形象,文体两开花,弘扬中华文化,希望大家多多关注。

zhangxingrui wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!