springboot多模块父pom打包正常,单模块报错

article/2025/8/22 10:30:18

背景:因为项目开发中经常发测试环境,发现使用阿里的插件能一键上传,不用手动上传比较方便。但是多模块有多个启动jar的时候,全局打包太慢,单独打发现报错。这里贴一下我使用这个插件的方式:

附带一个我感觉不错的脚本,使用这个插件把jar包放到服务器目录,然后实现备份发布

#!/bin/bashAPP_NAME=-admin.jar
ENV=sit
APP_HOME=/home/admin         # <<< 加:应用目录
NEW_JAR_DIR=/root                      # 新 JAR 包来源目录
BACKUP_DIR=$APP_HOME/old-jar           # 旧 JAR 备份目录(绝对路径更安全)# 切换到 APP_HOME 目录,避免路径错误
cd "$APP_HOME" || {echo "ERROR: 目录 $APP_HOME 不存在,终止执行"exit 1
}usage(){echo "Usage: sh $0 [start|stop|restart|status|-v]"exit 1
}# 检查程序是否在运行
is_exist(){pid=$(ps -ef | grep "$APP_NAME" | grep -v grep | awk '{print $2}')if [ -z "$pid" ]; thenreturn 1elsereturn 0fi
}backup_and_update_jar(){if [ -f "$APP_NAME" ]; thentimestamp=$(date +"%Y%m%d%H%M%S")cp "$APP_NAME" "${APP_NAME%.*}-$timestamp.jar"mv "${APP_NAME%.*}-$timestamp.jar" "$BACKUP_DIR"echo "旧版本已备份到 $BACKUP_DIR/${APP_NAME%.*}-$timestamp.jar"fiif [ -f "$NEW_JAR_DIR/$APP_NAME" ]; thenrm -f "$APP_NAME"mv "$NEW_JAR_DIR/$APP_NAME" "$APP_NAME"echo "使用新版本jar"elseecho "未找到新JAR包 $NEW_JAR_DIR/$APP_NAME,使用旧jar"fi
}start(){is_existif [ $? -eq 0 ]; thenecho "$APP_NAME is already running. pid=$pid"elsenohup /usr/bin/java -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m \-XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC \-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc/gc-$(date +%Y%m%d%H%M%S).log \-jar "$APP_NAME" --spring.profiles.active="$ENV" --jasypt.encryptor.password=Xxzx@0710@ > log 2>&1 &echo "$APP_NAME start success"fi
}stop(){is_existif [ $? -eq 0 ]; thenkill -9 "$pid"echo "$APP_NAME stop success"elseecho "$APP_NAME is not running"fi  
}status(){is_existif [ $? -eq 0 ]; thenecho "$APP_NAME is running. Pid is $pid"elseecho "$APP_NAME is NOT running."fi
}v(){echo "access version 1.0"
}restart(){stopbackup_and_update_jarsleep 1start
}case "$1" in"start")start;;"stop")stop;;"restart")restart;;"status")status;;"-v")v;;*)usage;;
esac

以ruoyi这个项目举例:

单独打包admin时会提示类不存在,尽管这个项目类在。

[ERROR] /D:/workspace/zhengshu/ysb-multiport-manage-control/back-control-admin/src/main/java/com/zs/web/controller/multiport/AppCareController.java:[3,54] 程序包com.baomidou.mybatisplus.core.conditions.query不存在

一开始以为是pom里的打包插件配置的不对,调整了一下,发现还是不行。

建议就配一个跳过test插件和springboot插件就行。

  <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests></configuration></plugin><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.xx.AdminApplication</mainClass><skip>false</skip> <!-- 此模块需要打包 --></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins><finalName>${project.artifactId}</finalName>

发现不是打包插件问题后,gpt给出了答案:

我平常的构建项目习惯是父pom里使用dependencyManagement标注所有的依赖,然后在子模块里引入对应的,admin基本不依赖什么,都是通过依赖传递使用system的。所以会出现这个问题,引以为戒。

附带一个如果不知道类的依赖由于传递依赖,不知道是实际的哪个坐标引入的命令:

mvn dependency:tree -Dverbose -Dincludes=org.apache.commons:commons-collections4


http://www.hkcw.cn/article/uGoTsdFLVf.shtml

相关文章

硬件同步机制-Swap指令实现互斥的基本讲解

Swap 指令 Swap指令能原子地交换两个变量的值 &#xff0c;即这一操作不可分割、不会被中断。其代码逻辑为&#xff1a; boolean temp *a; &#xff1a;创建一个临时变量temp &#xff0c;将变量a的值暂存到temp中 。*a *b; &#xff1a;把变量b的值赋给变量a 。*b temp; &…

中国国运新引擎:下一代液晶技术突破如何重塑全球显示格局

一、国运崛起&#xff1a;中国在未来关键领域的集体突破 在全球科技竞争白热化的当下&#xff0c;中国正迎来关键领域的集中爆发。从新能源汽车到 5G 通信&#xff0c;从量子计算到航天工程&#xff0c;中国不仅打破了西方的技术封锁&#xff0c;更在多个战略领域实现了从 “跟…

在雄性小鼠自发脑网络中定位记忆巩固的因果中枢

目录 简要总结 摘要 1 引言 2 方法 3 结果 简要总结 这篇文章主要研究了雄性小鼠在自发脑网络中记忆巩固的因果中枢定位。记忆巩固涉及学习后休息和睡眠期间全脑网络的自发重组&#xff0c;但具体机制尚不清楚。目前理论认为海马体在这一过程中至关重要&#xff0c;但其他…

美国威胁退出俄乌冲突调解

△联合国安理会(资料图)当地时间5月29日,美国告知联合国安理会,如果俄罗斯决定继续在乌克兰进行军事行动,美国将不得不考虑退出旨在结束冲突的谈判努力。美国表示,目前提出的协议是对俄罗斯最好的结果,俄罗斯总统普京应该接受。此外,对俄罗斯的额外制裁仍在讨论中。美国…

flutter项目迁移空安全

重中之重 备份好项目文件&#xff0c;甚至连已经加载好的flutter库也可以备份。环境包升级 2.1 不要直接换成flutter:3.0以上的版本&#xff0c;这样做既有基本的库兼容问题&#xff0c;又有空安全下的语法问题(整个项目中需要增加 late、?、!的语法错误&#xff0c;一片报错的…

单亲妈妈抗癌6年去世 生命旅程的坚韧与无奈

单亲妈妈抗癌6年去世 生命旅程的坚韧与无奈!5月28日晚,浙江的单亲妈妈张潇群因结肠癌去世,年仅37岁。她在网络上是一位知名的抗癌博主,无数人关注着她的抗癌历程,从确诊到治疗的过程充满艰辛。浏览她的社交媒体,仿佛走进了一场关于疼痛的独白,无论是病痛的呻吟还是求生的…

深入理解C#泛型:提升代码复用与类型安全的利器

在现代软件开发中&#xff0c;编写灵活、可重用且类型安全的代码是每个开发者的追求。C#作为一种强类型语言&#xff0c;通过引入泛型(Generics)特性&#xff0c;完美地解决了代码重用与类型安全之间的矛盾。本文将全面探讨C#泛型的核心概念、实现原理、高级特性以及最佳实践&a…

Deepseek升级 低调发布性能提升

5月28日晚,DeepSeek在官方交流群中宣布R1模型已完成小版本试升级。今年3月,DeepSeek对V3模型进行小版本升级时也采用了同样的方式,先通过官方交流群宣布,随后才公布具体更新内容。本次试升级,DeepSeek依旧保持低调,没有发布详细的技术说明文档或举行发布活动。然而,据用…

AET3156AP电源方案 禾纳代理商

特性VDs-30V,ID-28ARDS(ON)13.5mOM(TYR.)VGS-10V&#xff0c;Ib-6ARDS(ON)18mOM(TYR.)VGS-4.5V&#xff0c;IB-5A可靠且坚固雪

学生管理系统V2.0

学生管理系统V2.0 需求: 要求实现一个基于指针的学生成绩管理系统&#xff0c;具体功能如下: 添加学生信息&#xff1a;输入学号和三门成绩&#xff0c;存储到数组中。显示所有学生信息&#xff1a;遍历数组&#xff0c;输出每个学生的学号和成绩。计算每个学生的平均分和总分&…

从汇编的角度揭秘C++函数重载,原来这么简单

函数重载是指在同一个作用域内&#xff0c;有多个同名函数&#xff0c;但是它们的形参列表不同。在调用时&#xff0c;根据不同的实参&#xff0c;调用相应的函数。函数重载是一种静态多态形式。我们先来看一个函数重载的例子&#xff0c;然后分析其背后的原理。请看下面这段代…

Sigma-Aldrich胰蛋白酶细胞解离方案速览

Sigma-Aldrich_胰蛋白酶用于细胞培养 细胞解离是细胞传代过程中的一个步骤&#xff0c;即细胞从预处理表面分离&#xff0c;形成悬浮液。这些悬浮液对于传代培养重新接种、细胞计数分析和细胞增殖非常重要。有多种蛋白水解酶可用来从粘附基质上脱离细胞&#xff0c;胰蛋白酶就…

金正恩:炮兵部队随时能战且战之必胜!

金正恩:炮兵部队随时能战且战之必胜!据朝中社报道,朝鲜人民军大联合部队炮兵部队于29日进行了火炮射击比赛,朝鲜劳动党总书记、国务委员长金正恩亲临现场观摩。金正恩对比赛成果予以高度评价,他指出,参赛炮兵部队充分展现了炮兵武装力量的实战能力,时刻保持着万全的临战…

保健品,为何总在“围猎”老年人?

近日,市场监管总局在全国部署开展老年人药品、保健品虚假宣传专项整治工作,打击药品、保健品市场“坑老”“骗老”行为。各地市场监管部门将聚焦老年人药品、保健品领域,依法查处虚假宣传、价格欺诈、违法广告、非法添加等侵害老年人合法权益、破坏市场竞争秩序的行为。同时…

立志成为一名优秀测试开发工程师(第八天)——jemeter的学习

jemeter的学习 目录 一、jemeter常见元件的认识 二、jemeter手动设计脚本 三、jemeter工具录制脚本 一、jemeter常见元件的认识 ①测试计划&#xff1a;所有元件的父级文件&#xff08;容器&#xff09;&#xff0c;在所有元件的最顶层 其他元件都是基于测试计划来组织的…

如何使删除的数据不可恢复?

一些无用的数据包含我们计算机上的重要信息。如果你想让这些数据彻底不可恢复&#xff0c;你需要了解必要的数据擦除方法和一些有用的技巧。继续阅读并轻松获得解决方案。 第 1 部分&#xff1a;我可以使已删除的数据不可恢复吗&#xff1f; 是的&#xff0c;完全有可能使已删…

35岁小伙不结婚 爆改山洞隐居4年:美色不值得浪费时间金钱!

35岁小伙不结婚爆改山洞隐居4年。近日,一35岁小伙爆改山洞隐居4年引发网友热议,采访中他表示美色不值得自己浪费时间金钱,成本太高了。叫世外桃源也不为过,山洞门前有小河,门口可以种菜,而山洞用红砖建造,也非常现代化,有电脑和家具一应俱全的,书房是自己空间!建造一…

【Git】View Submitted Updates——diff、show、log

在 Git 中查看更新的内容&#xff08;即工作区、暂存区或提交之间的差异&#xff09;是日常开发中的常见操作。以下是常用的命令和场景说明&#xff1a; 文章目录 1、查看工作区与暂存区的差异2、查看提交历史中的差异3、查看工作区与最新提交的差异4、查看两个提交之间的差异5…

连接远程桌面计算机提示:“这可能是由于CredSSP加密数据库修正” 问题解决方案

连接远程计算机提示&#xff1a;“这可能是由于CredSSP加密数据库修正” 问题解决方案 1.连接远程计算机提示&#xff1a;“这可能是由于CredSSP加密数据库修正” 问题 2. win R,输入gpedit.msc&#xff0c;打开本地组策略编辑器 2.1 操作步骤&#xff1a;计算机配置–>系…

切片器导航-大量报告页查看的更好方式

切片器导航-大量报告页查看的更好方式 现在很多报告使用的是按钮导航&#xff0c;即使用书签按钮来制作页面导航的方式。但是当我们的报告有几十页甚至上百页的时候&#xff0c;使用书签按钮来制作页面导航&#xff0c;无论是对于报表制作者还是报告使用者来说都是一种很繁琐的…