解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz)

这篇具有很好参考价值的文章主要介绍了解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目准备开发个新功能,刚好很喜欢ruoyi写的任务调度,因此想到了集成ruoyi.quartz模块 ,遇到了很多问题:

首先因为ruoyi.quartz模块依赖了ruoyi.common模块,因此第一步我需要把common模块一部分依赖项复制到了quartz模块内(复制的内容就是common文件夹内的,未用到的部门被我剔除了):

解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz),spring boot,后端,java

当然只是添加common内公共代码是不够的,还需要添加依赖:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xxx</groupId>
        <artifactId>leaderdesktop</artifactId>
        <version>0.0.1-SNAPSHOT</version> 
    </parent><!-- 以上是我springcloud项目父模块定义-->

    <artifactId>ruoyi-quartz</artifactId>
    <version>4.0</version>
    <name>ruoyi-quartz</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!-- 定时任务 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.mchange</groupId>
                    <artifactId>c3p0</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
       
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency> <!--  因为我需要使用多数据源,正常项目也可删除-->
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.6.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

当把ruoyi.quartz模块集成到我的springcloud项目的A模块中(pom依赖了ruoyi.quartz),当启动A模块时访问ruoyi.quartz模块的接口404错误,经过查询了解想使用依赖模块(ruoyi.quartz)的接口必须在A模块启动类里面添加扫描注解

@ComponentScan({"com.epson.本模块某个路径.*", "com.ruoyi.quartz.*"}) 

以上注解添加之后又报:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field jobMapper in com.ruoyi.quartz.service.impl.SysJobServiceImpl required a bean of type 'com.ruoyi.quartz.mapper.SysJobMapper' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.ruoyi.quartz.mapper.SysJobMapper' in your configuration.

解决办法就是加上

@MapperScan({"com.本模块.mapper", "com.ruoyi.quartz.mapper"})

当把以上注解加上之后正常应该是没问题的,但是因我当前模块使用了多数据源因此又报以下异常:

postgresql.util.PSQLException: ERROR: relation "sys_job" does not exist

正常来说我只需要在ruoyi-quartz模块中的service实现类中添加@DS("xxx")数据源指定即可

但是我添加了还是无效,所以没办法就尝试第二种集成:

1. 首先第一步还是先把ruoyi-quartz使用的所有表格创建一遍,因我是使用postgre,因此脚本需要使用DBeaver导出postgre的脚本(在mysql数据库中执行完sql语句,右键把所有表导出csv,再选择postgre数据库public位置右键导入数据,选择csv文件即可完成postgre的表格创建)

2. 把ruoyi-quartz模块中的文件夹全部复制过去原有模块即可(我比较喜欢用mybatisplus的方法,因此mapper文件被我改造后只有一个接口声明)

最终启动还是报sys_job表不存在,排查半天发现SysJobServiceImpl类中的init方法的原因,注释掉这个方法就启动成功

init方法注释:项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据),因此如果不需要项目启动就执行定时任务那么可以注释掉

最后的代码层次:

解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz),spring boot,后端,java

再次访问OK:解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz),spring boot,后端,java 

 文章来源地址https://www.toymoban.com/news/detail-653181.html

到了这里,关于解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gradle打包分离依赖jar

    正常打包的jar是包含项目所依赖的jar包资源,而且大多数场景下的依赖资源是不会频繁的变更的,所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身,减小上传的jar包总大小,能实现加速部署的效果 打包后build/libs/lib就是依赖的jar包资源 boot.jar就是不含依赖资源

    2024年01月25日
    浏览(38)
  • 打包jar服务,如何提取第三方依赖包

    很多时候有这个需求,编译源码的时候无法联网,需要把源代码和依赖包一起离线用。 那么怎么把可以联网的工程依赖包,下载后提供给无网环境用呢。war的很多时候是默认提供好的,那么maven打包jar包服务的,assembly.xml 配置需要增加以下内容: 再执行maven打包就可以了。所

    2024年01月25日
    浏览(48)
  • 如何将一个jar包打包成maven依赖

    参数含义: DgroupId :组id 【对应pom中的groupId】 DartifactId:项目id 【对应pom中的artifactId】 Dversion:版本号 【对应pom中的version】 Dfile:jar包的绝对路径 Dpackaging:是什么包 DgeneratePom:是否生成pom maven中的GAV:

    2024年02月13日
    浏览(43)
  • maven打包所有依赖,对外提供sdk.jar

    maven打包所有依赖 如何让引入自己sdk的spring扫描sdk下的类 新建配置类(@Import注解可以加载指定类至spring容器中) 新建如下目录以及文件  

    2024年02月11日
    浏览(34)
  • Maven 生成(打包)带有依赖的可以直接执行的一个 jar 包

    在pom中增加如下内容      运行打包命令:mvn clean compile assembly:single

    2024年02月13日
    浏览(31)
  • maven根据操作系统的不同打包时引入不同的依赖(jar)

    在进行java开发时经常遇到一种情况,就是 windows 下和 linux 下需要引入的jar包是不一样的。 比如说我们需要使用java来操作 OpenGL 库,我们就需要通过 maven 引入 JOGL 的依赖, 然而在 window 下和在 linux 下需要引入 JOGL 的依赖是不一样的: 在 window 下,需要引入 JOGL 的 -win 版本的

    2024年02月09日
    浏览(42)
  • 使用maven profile 实现一次打包多版本依赖的fat jar

    基于一种特殊情况: 需要开发通用代码,但底层依赖的jar有不同版本,使用一次maven 命令编译来同时生成多个fat jar。 测试代码结构: log4j-v1/log4j-v2 有一个同名类被maintest引用。 maintest pom.xml如下

    2024年02月12日
    浏览(43)
  • springboot项目中引入本地依赖jar包,并打包到lib文件夹中

    描述:下载了第三方相关jar包后,项目中引入本地jar,测试环境正常,打包线上报错提示为找到该jar 原因:应该在/WEB-INF/lib/xxx.jar,被打包到此目录:/WEB-INF/classes/lib/xxx.jar 引入jar包后,在此pom.xml文件中里面添加依赖坐标,即添加中内容 在pom的 build/ build标签中还需进行如下修

    2024年02月07日
    浏览(51)
  • springboot项目中引入本地依赖jar包,如何打包到lib文件夹中

    前言: 工作中,碰到过springboot框架构建的java web项目,需要集成第三方推送功能,于是使用到了小米推送服务,下载了相关jar包。项目中引入本地jar,问题不大,编写完代码后,通过测试类测试,也没问题。然后就准备打包部署到开发服上。由于项目是通过tomcat部署的,所以

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包