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

背景:因为项目开发中经常发测试环境,发现使用阿里的插件能一键上传,不用手动上传比较方便。但是多模块有多个启动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.pswp.cn/bicheng/82906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手

前沿技术应用全景图 本项目作为通义灵码2.5的标杆实践案例&#xff0c;展现了AI辅助开发在复杂业务系统中的革命性突破。通过深度集成12306 MCP服务体系&#xff0c;我们构建了一个融合智能决策、环境感知和自主优化的新一代火车票查询系统。 #mermaid-svg-4D7QqwJjsQRdKVP7 {…

进程间通信(共享内存)

目录 前置&#xff1a; 一 原理 二 API 1. shmgetr 2. shmctl 3. 指令操作 2. 删除 3. 挂接 4. 断开挂接 三 demo代码 四 共享内存的特征 前置&#xff1a; 1.前面说的不管是匿名管道还是命名管道都是基于文件的思想构建的一套进程间通信的方案&#xff0c;那有没有…

详解GPU

详解GPU GPU&#xff08;图形处理器&#xff09;就像电脑里的 “图形小能手”&#xff0c;原本主要用来画画&#xff08;渲染图形&#xff09;&#xff0c;现在还能帮忙干很多杂活&#xff08;并行计算&#xff09; 一、先认识 GPU 的 “钥匙”&#xff1a;驱动和开发工具 装驱…

体育遇上AI:解读新一代智能阅读产品

在信息过载的今天&#xff0c;体育迷们时常面对这样的困扰&#xff1a;如何从海量赛事新闻、数据分析和深度评论中高效获取自己真正关心的内容&#xff1f;体育AI阅读产品正成为解决这一痛点的关键钥匙——它融合人工智能技术与体育内容生态&#xff0c;为球迷提供智能化、个性…

外网访问可视化工具 Grafana (Linux版本)

Grafana 是一款强大的可视化监控指标的展示工具&#xff0c;可以将不同的数据源数据以图形化的方式展示&#xff0c;不仅通用而且非常美观。它支持多种数据源&#xff0c;如 prometheus 等&#xff0c;也可以通过插件和 API 进行扩展以满足各种需求。 本文将详细介绍如何在本地…

Java开发经验——阿里巴巴编码规范实践解析4

摘要 本文主要介绍了阿里巴巴编码规范中关于日志处理的相关实践解析。强调了使用日志框架&#xff08;如 SLF4J、JCL&#xff09;而非直接使用日志系统&#xff08;如 Log4j、Logback&#xff09;的 API 的重要性&#xff0c;包括解耦日志实现、统一日志调用方式等好处。同时&…

各个链接集合

golang学习&#xff5e;&#xff5e;_从数组中取一个相同大小的slice有成本吗?-CSDN博客 框架 golang学习&#xff5e;&#xff5e;_从数组中取一个相同大小的slice有成本吗?-CSDN博客 golang k8s学习_容器化部署和传统部署区别-CSDN博客 K8S rabbitmq_rabbitmq 广播-CSD…

Cesium 展示——获取鼠标移动、点击位置的几种方法

文章目录 需求分析:这里我们用到了几种常见的鼠标事件1. 获取鼠标移动的位置2. 获取鼠标点击的位置3. 添加面4. 示例代码需求 获取指定断面的 label 分析:这里我们用到了几种常见的鼠标事件 1. 获取鼠标移动的位置 viewer.screenSpaceEventHandler.setInputAction((moveme…

技术分享 | Oracle SQL优化案例一则

本文为墨天轮数据库管理服务团队第70期技术分享&#xff0c;内容原创&#xff0c;作者为技术顾问马奕璇&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题概述 开发人员反映有条跑批语句在测试环境执行了很久都没结束&…

$3 #12阶段三小结Java se

$3 #12 阶段三小结 Java se 基本没有新学什么知识点 感觉 基础语法 和高级语法 已经学完了 现在就是得学习 一些企业开发的框架 以及项目架构的思维 比如一个产品 从需求分析 到功能模块设计 到接口文档定义 数据库建立 前端接口页面设计 后端接口开发的步骤 然后现在比…

华为云Flexus+DeepSeek征文 | 初探华为云ModelArts Studio:部署DeepSeek-V3/R1商用服务的详细步骤

华为云FlexusDeepSeek征文 | 初探华为云ModelArts Studio&#xff1a;部署DeepSeek-V3/R1商用服务的详细步骤 前言一、华为云ModelArts Studio平台介绍1.1 ModelArts Studio介绍1.2 ModelArts Studio主要特点1.3 ModelArts Studio使用场景1.4 ModelArts Studio产品架构 二、访问…

易经六十四卦象解释数据集分享!智能体知识库收集~

今天给大家分享一个易经六十四卦象解释数据集 &#xff0c;继续来积累AI相关的资料。 六十四卦&#xff0c;记载于《易经》&#xff0c;每一卦的图像均由两个八卦上下组合而成&#xff0c;每一卦各有六个爻。南宋朱熹说&#xff0c;先画八卦于内&#xff0c;后画八卦于外&#…

1 µs = 10⁻⁶ s

1 s 10⁰ s 1 ms 10⁻ s 1 s 10⁻⁶ s 1 ns 10⁻⁹ s 1 ps 10⁻ s 1 fs 10⁻⁵ s ⏱️ 时间单位&#xff08;十进制&#xff09; 符号单位名称10 的幂次s秒&#xff08;second&#xff09;10⁰ms毫秒&#xff08;millisecond&#xff09;10⁻s微秒&#xff08;microseco…

webrtc初了解

1. webrtc的简介 一、WebRTC 是什么&#xff1f; Web Real-Time Communication&#xff08;网页实时通信&#xff09;&#xff0c;是浏览器原生支持的实时音视频通信技术&#xff0c;无需安装插件或客户端&#xff0c;可直接在浏览器之间实现点对点&#xff08;P2P&#xff09…

从数据持久化到网络通信与OpenCV:Qt应用程序开发的深度探索与实战

文章目录 前言一、QSettings&#xff1a;轻量级数据持久化方案1.1 QSettings 主要特点1.2 QSettings 常用函数整理 二、数据库2.1 连接SQLite数据库2.2 建表2.3 增删改 三、网络编程3.1 网络分层3.2 IP地址3.3 端口号3.4 基于TCP的Socket通信3.4 相关接口3.4.1核心类3.4.2 通信…

经典SQL查询问题的练习第一天

首先有三张表&#xff0c;学生表、课程表、成绩表 student:studentId,studentName; course:courseId&#xff0c;courseName,teacher; score:score,studentId,courseId; 接着有以下几道题目&#xff1a; ①查询课程编号为‘0006’的总成绩&#xff1a; 首先总成绩&#x…

企业级网络管理实战:Linux、云与容器的深度融合与优化

在数字化转型浪潮下&#xff0c;企业网络架构日益复杂&#xff0c;Linux系统、云计算与容器技术成为构建高效、灵活网络的核心要素。本文将从技术原理、实践方案、优化策略三个维度&#xff0c;深度解析企业级网络管理中的关键技术&#xff0c;助力企业打造稳定、安全、可扩展的…

信号与系统速成-1.绪论

b站浙大教授虽然讲的比较细&#xff0c;但是太慢了&#xff0c;不适合速成 祖师爷奥本海姆的MIT课程好像和我们教材的版本不太匹配&#xff0c;但是讲的很不错 慕课上也有很多资源&#xff0c;比如信号与系统 - 网易云课堂 同站博主篱笆外的xixi的文章也挺不错 最终我还是选…

缓存架构方案:Caffeine + Redis 双层缓存架构深度解析

在高并发、低延迟的现代互联网系统中&#xff0c;缓存是提升系统性能和稳定性的重要手段。随着业务复杂度的增长&#xff0c;单一缓存方案&#xff08;如仅使用Redis或仅使用本地缓存&#xff09;已难以满足高性能与一致性需求。 本文将围绕 Caffeine Redis 的双层缓存架构展…

【Elasticsearch】track_total_hits

在 Elasticsearch 中&#xff0c;track_total_hits 是一个查询参数&#xff0c;用于控制是否精确计算搜索结果的总命中数&#xff08;total hits&#xff09;。默认情况下&#xff0c;Elasticsearch 在某些情况下可能会对总命中数进行近似计算&#xff0c;以提高性能。track_to…