Maven打包时将本地 jar 加入 classpath
在使用 maven 编译项目时,我们有时候会需要引入本地的 jar 包作为依赖(不部署到本地仓库),一般会使用 scope 为 system 的标签来引入,如下所示:
<dependency><groupId>com.example</groupId><artifactId>system-dependency</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${basedir}/lib/system-dependency.jar</systemPath>
</dependency>
此时,pom 中往往还有其他的依赖,是从远端的 maven 仓库下载。如果我们需要同时将本地 jar 和远端下载的 jar 同时注册到 classpath 中,我们可以这么配置插件。
一、配置maven-dependency-plugin
首先利用maven-dependency-plugin插件,将 runtime 和 system 的依赖都拷贝到指定路径,这里是选择的路径是target/lib:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.4.0</version><executions><execution><id>copy-runtime-dependency</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><excludeTransitive>false</excludeTransitive><outputDirectory>${project.build.directory}/lib</outputDirectory><includeScope>runtime</includeScope></configuration></execution><execution><id>copy-system-dependency</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><excludeTransitive>false</excludeTransitive><outputDirectory>${project.build.directory}/lib</outputDirectory><includeScope>system</includeScope></configuration></execution></executions></plugin>
二、配置maven-jar-plugin
然后利用maven-jar-plugin插件将这些所有依赖的 jar 都注册到 classpath中,如下所示:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>com.xx.YourMain</mainClass></manifest><manifestEntries><Class-Path>lib/system-dependency.jar</Class-Path></manifestEntries></archive></configuration></plugin>
这里的lib/system-dependency.jar对应的就是我们通过maven-dependency-plugin插件拷贝之后的新 jar,而不是最初的 systemPath 路径。
三、编译 & 执行
最终通过mvn clean package命令编译之后,就可以在我们自己的 jar的MANIFEST.MF文件中查看,所有的 jar 都被写到classpath,包括本地 jar。然后我们就可以通过 java -jar xxx.jar直接执行我们自己的程序。
相关文章:
Maven打包时将本地 jar 加入 classpath
在使用 maven 编译项目时,我们有时候会需要引入本地的 jar 包作为依赖(不部署到本地仓库),一般会使用 scope 为 system 的标签来引入,如下所示: <dependency><groupId>com.example</groupI…...
Spring Boot打出的jar包为什么可以独立运行
闲来无事,浏览网页看到有人说jar包为什么可以独立运行,想起前端时间写的jar打包后无法正常运行处理。jar解压缩后有多个文件夹,内部存放运行所需jar包和一些配置文件,本文做一个简单介绍。 JAR包和WAR包区别 在Java开发中&#…...
“微软蓝屏”事件:网络安全与稳定性的深刻反思
🌈所属专栏:【其它】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点…...
【技术升级】Docker环境下Nacos平滑升级攻略,安全配置一步到位
目前项目当中使用的Nacos版本为2.0.2,该版本可能存在一定的安全风险。软件的安全性是一个持续关注的问题,尤其是对于像Nacos这样的服务发现与配置管理平台,它在微服务架构中扮演着核心角色。随着新版本的发布,开发团队会修复已知的…...
[题解]CF1401E.Divide Square(codeforces 05)
题目描述 There is a square of size 106106106106 on the coordinate plane with four points (0,0)(0,0) , (0,106)(0,106) , (106,0)(106,0) , and (106,106)(106,106) as its vertices. You are going to draw segments on the plane. All segments are either horizonta…...
软考高级第四版备考--第32天(新一代信息技术及应用)
1、物联网 1.1技术基础 1.1.1感知层:由各种传感器构成,包括温度传感器,二维码标签、RFID标签和读写器,摄像头,GPS等感知终端。感知层是物联网识别物体、采集信息的来源。 1.1.2网络层:由各种网络&#x…...
【RabbitMQ】MQ相关概念
一、MQ的基本概念 定义:MQ全称为Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件。它允许应用程序通过读写队列中的消息来进行通信,而无需建立直接的连接。作用:主要用于分布式系统之间的通信&#x…...
【MySQL是怎样运行的 | 第二篇】MySQL三大日志文件
文章目录 2.MySQL三大日志文件2.1日志文件列表2.1.1 redo log2.1.2 bin log2.1.3 undo log 2.2redo log日志详讲2.3 binglog和redo log有什么区别?2.4一条更新语句的执行过程 2.MySQL三大日志文件 2.1日志文件列表 redo log:重做日志,记录了…...
视图、存储过程、触发器
一、视图 视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表,视图只能用来从查询,不能做增删改(虚拟的表) 1.创建视图 创建视图的语法: create view 视图名【view_xxx / v_xxx】 a…...
【学习笔记】解决Serial Communication Library编译问题
【学习笔记】解决编译 Serial Communication Library 时的 Catkin 依赖问题 Serial Communication Library 是一个用 C 编写的用于连接类似 rs-232 串口的跨平台库。它提供了一个现代的 C 接口,它的工作流程设计在外观和感觉上与 PySerial 相似,但串口速…...
在 Windows 环境下实现负载均衡:提升系统性能与可靠性的关键技术
Windows 环境下的负载均衡:提升系统性能与可靠性的关键技术 负载均衡(Load Balancing)是现代网络架构中不可或缺的一部分,通过将请求分配到多台服务器上来提高系统的性能和可靠性。本文将介绍在 Windows 环境下使用负载均衡的基本…...
【Linux】-----工具篇(自动化构建工具make/makefile)
目录 前言 一、是什么? 二、怎么样的? 三、原理及细节 图解代码 细节1:make工作规则 ①依赖文件存在 ②依赖文件不存在 ③依赖文件列表为空(特殊) .PHONY关键字 细节2:makefile识别程序需要重新编译? 四、…...
图的遍历:深度优先搜索(DFS)
引言 图遍历是指按照一定的顺序访问图中的每个顶点。遍历图的两种主要方法是深度优先搜索(Depth-First Search, DFS)和广度优先搜索(Breadth-First Search, BFS)。本文将详细介绍深度优先搜索的定义、算法及其实现。 深度优先搜…...
普元EOS学习笔记-某些版本的EOS提供的maven获取依赖失败的问题解决
前言 普元EOS的开发包中,提供了maven,因为EOS项目的某些依赖只能从普元官方仓库获取,因此,编译EOS项目必须使用EOS提供的maven。 maven拉取依赖失败 某些版本的EOS提供的maven在编译EOS项目的时候会出现拉取失败的现象。 [FATA…...
Pycharm + Pyside6
1. 使用 Qt designer 创建 UI 文件 2. 使用 UIC 工具生成 ui_.py 文件 3. 自定义类导入ui.py 文件的窗口类 4.自定义窗口继承UI窗体类 5. self.setupUi(self) from PySide6.QtWidgets import QApplication, QWidget, QComboBox, QVBoxLayout from ui_test import Ui_Formc…...
强化学习之价值迭代算法动态规划求解悬崖漫步环境(CliffWalking)最优策略及最优状态价值函数
class CliffWalkingEnv:def __init__(self,ncol12,nrow4):self.ncolncol#定义网格世界的列self.nrownrow#定义网格世界的行self.Pself.createP()#转移矩阵P[state][action][(p,next_state,reward,done)]包含下一个状态和奖励def createP(self):P[[[]for i in range(4)]for j in…...
javascript deriveKey和deriveBits()由主密钥派生出新的密钥进行加密
deriveKey 方法的完整示例,演示如何使用 HMAC 作为密钥派生函数(KDF)来从一个给定的秘密(如密码)派生出一个新的 AES 加密密钥。 //创建一个函数来生成随机盐function getRandomSalt(length){let arraynew Uint8Array…...
基于微信小程序的自习室选座系统/基于Java的自习室选座系统/自习室管理系统的设计与实现
获取源码联系方式请查看文章结尾🍅 摘要 自习室选座是学校针对用户必不可少的一个部分。在学校的整个过程中,学生担负着最重要的角色。为满足如今日益复杂的管理需求,各类微信小程序自习室选座也在不断改进。本课题所设计的小程序自习室选座系…...
echarts所遇到的问题,个人记录
TreeMap 矩形树图,label设置富文本之后,无法垂直居中 font-size 支持rem,其余不支持 font-size 支持 rem,但是其余的属性如height,width等不支持 echarts-for-react 绑定事件,会覆盖实例上绑定的 当给cha…...
Skyeye云智能制造企业版源代码全部开放
智能制造一体化管理系统 [SpringBoot2 - 快速开发平台],适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
