目录
1、Failed to determine suitable jdbc url
一、创建中间分支
#克隆个人仓库分支到本地
git clone https://gitee.com/woaichifang/ruoyi-framework.git
#切换到本地仓库目录
cd ruoyi-framework/
#创建RuoYi-Vue-Ori分支
git checkout -b RuoYi-Vue-Ori
#设置若依的远程仓库地址
git remote add origin_ruoyi https://gitee.com/y_project/RuoYi-Vue.git
#查看远程分支,可以发现有两个
git remote -v
#从若依远程分支拉取代码
git pull origin_ruoyi master --allow-unrelated-histories
从上图可以发现拉取下来有冲突。我们这里以若依远程分支为准
#查看git状态,可以看到冲突有三个,我们这里以若依远程分支为准
git status
#将冲突添加到提交列表
git add *
git add .gitignore
git commit -m "冲突解决"
#提交代码到个人分支
git push --set-upstream origin RuoYi-Vue-Ori
#尝试从若依远程分支拉取代码,看是否会报错,如果不报错就成功了。
git pull origin_ruoyi master
以上为中间分支的创建过程,该分支的作用是从若依远程分支拉取最新的代码,同步到个人仓库分支,起到保证本地代码与若依同步的作用。
#打包分支
git checkout -b RuoYi-Vue-Deploy
#中间分支的代码提交到打包分支
git push --set-upstream origin RuoYi-Vue-Deploy
二、基础项目打包
将若依项目框架打成jar包提供给新项目使用,需用idea先导入RuoYi-Vue-Deploy分支的代码,再修改如下几点。
-
1.修改父pom.xml
1)修改build插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!--源码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2)添加打包后的发布配置
添加distributionManagement,url修改为自己的地址
<distributionManagement>
<repository>
<id>rdc-releases</id>
<url>https://packages.aliyun.com/maven/repository/2223685-release-ehwz7c/</url>
</repository>
<!--快照发布地址-->
<snapshotRepository>
<id>rdc-snapshots</id>
<url>https://packages.aliyun.com/maven/repository/2223685-snapshot-erQrDK/</url>
</snapshotRepository>
我这里使用的是阿里的云效私服,具体配置步骤查看上一篇《云效私服-搭建自己的maven仓库》。如只要将打包后的jar放到本地,可以将url替换为file:<本地目录>
-
2、修改ruoyi-admin的pom.xml
替换ruoyi-admin的pom.xml下的spring-boot-maven-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
注:替换的原因如下:
使用spring-boot-maven-plugin在打包,会将包的结构变成如下格式,该格式在引入依赖包的情况下无法被识别到,比如ruoyi-admin里面有controller层,如果是该格式,在新项目中会无法识别到。
改成maven-compiler-plugin,打包后结构如下:
-
3、打包并同步到私服
使用idea打包,点击deploy
或者使用命令:
mvn clean install org.apache.maven.plugins:maven-deploy-plugin:2.8:deploy -DskipTests
推送成功后,进入私服平台查看,如下图,推送成功
-
4、提交修改后的代码
git status
git add *
git commit -m "提交打包配置"
git push origin RuoYi-Vue-Deploy
-
三、新项目引入基础项目
-
1、新分支创建
创建一个new-project的目录,在该目录下克隆若依代码
git clone https://gitee.com/woaichifang/ruoyi-framework.git
#切换到RuoYi-Vue-Ori分支
git checkout RuoYi-Vue-Ori
#创建新的分支ruoyi-demo
git checkout -b ruoyi-demo
删除掉下图所示包。
-
2、修改工程
ruoyi-admin为demo-admin,修改ruoyi-system为demo-custom
1)修改父pom.xml
修改如下:
新增
<demo.version>1.0.0</demo.version>
新增依赖
<!--若依原web入口-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-admin</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!--个性化开发-业务逻辑-->
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo-custom</artifactId>
<version>${demo.version}</version>
</dependency>
删除以下模块
新增以下内容:
<modules>
<module>demo-admin</module>
<module>demo-custom</module>
</modules>
2)修改xxx-admin下的pom.xml
修改如下:
添加ruoyi-admin、demo-custom包依赖
<!--若依原web入口-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-admin</artifactId>
</dependency>
<!--个性化开发-业务逻辑-->
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo-custom</artifactId>
</dependency>
3)修改xxx-custom下的pom.xml
4)调整demo-admin结构
A、删除demo-admin多余的包,保留resources下的文件,重命名RuoYiApplication为DemoApplication、RuoYiServletInitializer为DemoServletInitializer。
B、在DemoApplication的添加包扫描,如果不添加,jar包中的service、controller等组件都扫描不到。
@ComponentScan(basePackages = {"com.ruoyi.*","com.demo.*"})
C、修改logback.xml,增加个性化项目的日志打印
D、修改application.yml
5)调整demo-custom结构
删除demo-custom下多余的包,结构变更如下
-
四、构建项目
-
五、运行后端项目
-
六、运行前端项目
执行命令:
npm install
npm run dev
运行项目报错,: error:0308010C:digital envelope routines::unsupported
出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。
在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 版本可能会抛出该异常。
解决方式如下:
找到package.json文件,按下图修改:
增加 set NODE_OPTIONS=--openssl-legacy-provider &
修改后,重新运行即可。
-
七、实现成果
基于若依框架打包的新项目运行成功,结构简洁清爽。
-
八、基于若依打包出现的问题
-
1、Failed to determine suitable jdbc url
出现该问题,是因为ruoyi-framework包里面的配置没有被扫描到,导致新工程运行时使用了springboot的默认配置,会去扫描spring.datasource.url的配置,但是ruoyi使用的是主从数据源
排查步骤:
1)@SpringBootApplication 添加exclude = {DataSourceAutoConfiguration.class}
依然无效。
2)怀疑是ruoyi-framework下DruidConfig.java配置不生效,在Application启动类上增加扫描注解
@ComponentScan(basePackages = {"com.ruoyi.*","com.demo.*"})
前一个为若依包路径,后一个为新工程包路径
运行后,启动正常。
2、访问若依原有controller接口报404
1)查看是否有包扫描
若无,增加后运行查看是否正常。若有按第二步。
2)查看ruoyi-admin的依赖包
解压后是否为如下图:
如果是,那么ruiyi-admin在打包是使用spring-boot-maven-plugin打包。
使用spring-boot-maven-plugin在打包,会将包的结构变成如下格式,该格式在引入依赖包的情况下无法被识别到,比如ruoyi-admin里面有controller层,如果是该格式,在新项目中会无法识别到。
改成maven-compiler-plugin,打包后结构如下: