河南视频网站建设公司,提供网站设计服务商,wordpress hook 顺序,网页策划方案怎么做“若依”这个开源项目#xff0c;感觉是外包公司标配了啊#xff0c;都在用。从README感觉像是某位阿里员工的工作之余的小整理。对于SprintBoot#xff0c;个人感觉太重型#xff0c;不过人家生态起来了#xff0c;不是那么容易玩完。但是随着VMware被博通收购#xff0…“若依”这个开源项目感觉是外包公司标配了啊都在用。从README感觉像是某位阿里员工的工作之余的小整理。对于SprintBoot个人感觉太重型不过人家生态起来了不是那么容易玩完。但是随着VMware被博通收购SpringFramework的走向还是不很明朗的。
今天我们就来试试这个高星项目的搭建。不太喜欢IDE到了Java我们也尽量避免吧我们就用vim应该够了也不写多少代码就是纯搭建环境。只是手头没有mysql也懒得去装mariadb了自从用了proot连docker这种重型工具都懒得用image太占空间runtime不是busybox的再给一套glibc没有意义想到了轻量级数据库sqlite那么就它了用它把“若依”跑起来吧。
下载代码和工具
图个省事我们先来看“若依”的单机版 https://gitee.com/y_project/RuoYi git clone应该都知道的没有什么花头。看了下我的java openjdk version 17.0.8.1 2023-08-24; mvn呢哦这台虚拟机我连mvn都没有装…直接 sudo apt install maven 【坑1】 坑我们之后填这样工具就齐全了这样的java项目一般就是 mvn clean package 就好了吧。
更换数据库
“若依”这个项目模块化其实真的不太友好比如强绑定mysql。那就找到 application.yml然后溜达溜达看看配置数据库的位置。只看到需要更正 pagehelper.helperDialect 到 sqlite另外就是 ruoyi.profile 位置可以更新下。
旁边那个 application-druid.yml 就是用了 druid 呗数据库设置多数在这里了。注释掉 ## 主库数据源#master:# url: jdbc:mysql://localhost:3306/ry?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8# username: root# password: password# 从库数据源#slave:# # 从数据源开关/默认关闭# enabled: false# url: # username: # password:然后我们把 spring.datasource.driverClassName 换成 sqlite的 org.sqlite.JDBC然后 spring.datasource.url 可以先设置一个默认的比如 jdbc:sqlite:test.db后面启动都是可以 -Dspring.datasource.url改的。spring.datasource.druid.validationQuery 这里后面是需要改的改成比如 SELECT test FROM DUAL因为 SELECT 1 FROM DUAL 不管如何sqlite是不会出结果的。
改完driver class我们当然要申明dependency咯。去ruoyi-admin下的pom.xml转一圈把Mysql驱动包那个dependency注释掉换成 dependencygroupIdorg.xerial/groupIdartifactIdsqlite-jdbc/artifactIdversion3.16.1/version/dependency【坑2】
数据库driver换好了我们还可以看到“若依”有个sql文件夹有两个文件 quartz.sql 和 ry_date.sql这两个也是强绑定 mysql 的。需要手动更新下。其实转成 sqlite 也不难
所有 sys_date() 转成 CURRENT_TIMESTAMP所有auto_increament如果是bigint或者int全部变为 integer primary key autoincrement如果之后mysql有单独primary key(...)注释掉就好engineinnodb auto_increment100 mysql专有的家伙全部注释掉然后把mysql的comment全部放到 -- 之后注释掉注意缺的逗号补上有mysql key 的地方也注释掉拉出去转换成 drop index if exists name; create name on table ( column );最后加一张表 DUAL 保证validation pass: create table DUAL (test integer); insert into DUAL (test) values (1);
改好了就可以在 sqlite3 里 .read xxx.sql导入sql语句了。
运行
sqlite差不多配置换好了我们先来尝试运行一下。 【坑1】mvn clean package然后报错了
[ERROR] Error executing Maven.
[ERROR] java.lang.IllegalStateException: Unable to load cache item
[ERROR] Caused by: Unable to load cache item
[ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper这个是maven版本的问题apt get默认给我装了个啥mvn --version - 3.6.3 -_-/// 最新的 maven 3.9 就不报错了。
mvn clean package 在ruoyi-admin的target文件夹就能拿到ruoyi-admin.jar了这不就可以运行了么… java -Dserver.port9999 -Dspring.datasource.urljdbc:sqlite:/path/to/test.db -jar ruoyi-admin.jar 【坑2】竟然又报看不懂的错了
Unparseable date: xxxx-yy-zz 00:00:00 does not match (\p{Nd})\Q-\E(\p{Nd})\Q-\E(\p{Nd})\Q \E(\p{Nd})\Q:\E(\p{Nd})\Q:\E(\p{Nd})\Q.\E(\p{Nd})看了一下sqlite driver解析不了sqlite生成的timestamp有点恶搞。 靠官方github解决吧 ref: https://github.com/xerial/sqlite-jdbc/issues/88 xerial commented on Jul 1, 2021 I’ll release 3.36.0.1 today. 去 https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc 看下最新版本3.43.2.2
成功启动
登录发现报错了哦忘了“若依”用的mybatis肯定有一堆sql嵌在xml里。
./ruoyi-generator/src/main/resources/mapper/generator/./ruoyi-generator/src/main/resources/vm/sql./ruoyi-quartz/src/main/resources/mapper/quartz./ruoyi-system/src/main/resources/mapper/system 这个就不一个一个赘述了纯是sql重写一遍mysql - sqlite
做完了发现有人已经做过的但是不完整的repo 这里是最终总结 https://gitee.com/shuizhimeng/ruo-yi-fast-sqlite/blob/master/sql/%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95
这样“若依”就运行起来了。前后还没有敲这篇文章时间长… 那些oracle DBpostgresql更换当然就同理了… 后面我们再补充“若依”的微服务版也就多个 nacos 和一些cloud相关组件。