Maven程序打包成单个Jar Part 2 -- Maven shade plugin

Eclipse集成Maven的协议桥接原理与工程实践 Maven是一个声明式构建生命周期管理工具,其核心在于通过pom.xml定义依赖、插件和构建阶段的契约式约定;Eclipse则是基于事件驱动的IDE,依赖.project和.classpath等元数据维护项目状态。二者本质逻辑不同,导致简单‘安装插件’无法实现真正集成——关键在于m2e如何完成Maven生命周期与Eclipse Builder机制的协议桥接。这种桥接决定了依赖解析准确性、JDK/Maven版本协同性、profile激活一致性等工程稳定性要素,广泛应用于金融、航天等对构建可复现性要求严苛的Ja 阅读详情

前面讲到assembly在unpack和repackage的过程中不会merge相同名字的文件而是直接忽略,所以会导致一些问题,所以我们最后选择了可以通过文件merge功能的shade plugin,实现如下:

     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <finalName>executable</finalName>
                        <shadedArtifactAttached>true</shadedArtifactAttached>
                        <shadedClassifierName>Shaded</shadedClassifierName>
                        <shadedTestJar>true</shadedTestJar>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.cloud.....PublisherTest</mainClass>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.handlers</resource>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.schemas</resource>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.tooling</resource>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

不过这种方式,我需要把test class,test resouce放到main中,因为shade打包的时候不包含test相关的东西。

基于Spark与余弦相似度的大数据用户匹配系统实战 推荐系统是现代互联网应用的核心技术之一,其核心原理是通过分析用户与物品的特征,预测用户的偏好并进行个性化推荐。在技术实现上,推荐系统通常依赖于用户画像构建和相似度计算。用户画像将用户的多维度信息(如兴趣、行为、属性)量化为特征向量,而余弦相似度则是衡量高维向量间相似性的经典算法,尤其适用于稀疏特征场景。从技术价值看,这类系统能显著提升信息分发效率和用户体验,广泛应用于电商、社交、内容平台等领域。本文以构建一个基于大数据技术的用户匹配引擎(BFB系统)为例,深入剖析了如何利用Spark分布式计算框架和MLli 阅读详情

相关推荐

Flink checkopint使用教程

Flink checkpoint 需要写入远程持久化存储(如 HDFS、S3 等),不能直接存在本地,因为 Kubernetes Pod 是临时易失的。正常使用PVC = 本地硬盘(快,独享),MinIO/S3 = 共享网盘(慢,共享)正常公司使用PVC即可。

tian_jiangnan的博客 584

Maven程序打包成单个Jar Part 1 -- Maven assembly plugin

使用Maven Assembly Plugin打包maven project成单个executable jar

cloud的技术积累 1180

MuleSoft企业级AI编排:构建生产就绪的LLM工作流中枢

AI编排(AI Orchestration)是企业将大语言模型(LLM)深度融入核心业务系统的关键范式,其本质是通过服务化、可视化、可治理的流程调度机制,解决LLM在真实生产环境中面临的安全合规、系统耦合与运维治理三大瓶颈。区别于LangChain等AI编程框架,AI编排强调能力原子化与流程标准化,依托MuleSoft等企业集成平台实现LLM服务的统一接入、上下文路由、权限校验与审计追踪。该技术路径天然适配ERP/CRM/HRIS等遗留系统集成场景,支撑采购审查、客户尽调、合规审计等高价值闭环应用,已成为金

dengwan3818的博客 381

Maven打包Jar异常概括

1. 程序包xxxxx不存在 如果有两个jar包,B.jar依赖A.jar,在打包的时候会报程序包xxxxx不存在异常,这是因为在A.jar打包的时候,没有把class打包进去 所以,需要在打包的时候告诉maven,把对应的文件打包进去 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</ar

如果人生就像一场梦,那就希望你做个好梦! 407

maven 中,使用shadedClassifierName配置项,解决jar自带版本号的问题

增加以下两行配置 &amp;lt;shadedArtifactAttached&amp;gt;true&amp;lt;/shadedArtifactAttached&amp;gt; &amp;lt;shadedClassifierName&amp;gt;with-spark-${spark.internal.version}&amp;lt;/shadedClassifierName&amp;gt; 就可以使得编译的jar

zhixingheyi_tian的博客 3698

基于MapReduce实现KNN算法:电影用户性别预测实战

在机器学习与大数据处理深度融合的今天,K近邻算法(KNN)作为经典的分类方法,以其无需显式训练、逻辑直观的特点,广泛应用于用户画像、推荐系统等场景。然而当数据规模膨胀,海量样本间的距离计算成为性能瓶颈,这正是分布式计算框架MapReduce的用武之地。MapReduce通过分而治之的思想,将独立的距离计算任务并行化,使KNN能够高效扩展至百万级用户。本文以电影网站用户性别预测为实例,基于Hadoop平台,从特征工程、距离度量、K近邻投票到分布式作业设计,完整讲解如何用Java构建一个端到端的机器学习项目。项

weixin_33895695的博客 425

Maven的三种打包方式(jar、shade、assembly)

文章目录01 引言02 assembly打包2.1 介绍2.2 使用2.3 字段解析03 jar打包3.1 介绍3.2 使用3.3 字段解析04 shade打包4.1 介绍4.2 使用4.3 字段解析05 文末 01 引言 Maven有三种打包方式,分别为: assembly:自定义的打包结构,也可以定制依赖项等; jar:默认的打包方式,用来打普通的project JAR包; shade:用来打可执行jar包,也就是所谓的fat JAR包。 下面来讲解下这三种的打包方式。 02 assembly打包

阿甘兄 1万+

maven所需jar包集合.part1

maven所需jar包集合,可以上传到自己的私服

用shade打包来解决jar包冲突

主要是maven-assembly-plugin的后继者,用来将一个自启动jar项目的依赖打包到一个大的jar中,比如dubbo就是这么做的.

qq_23204557的博客 1862

获取B站某用户更多的关注数和粉丝数

获取B站某用户更多的关注数和粉丝数 相关记录 一、 前言 B 站最多只能翻 5 页用户的关注数和粉丝数,如何能够看到更多呢。 方法我也是从网上翻来的,记载博客里,算是我研究过这个话题了。 二、需要的东西 关注数的 api https://api.bilibili.com/x/relation/followings?vmid=2884629&pn=1&ps=20&order=desc&jsonp=jsonp 关注者(粉丝)的 api https://api.bilibili.

Enderman_xiaohei的博客 4819

Delphi 13 Beta初体验:手把手教你安装RAD Studio Ganymede,并实测新条件运算符

本文详细介绍了Delphi 13 Beta(代号Ganymede)的安装步骤和新特性,重点解析了新增的条件运算符语法。通过实测对比,展示了64位IDE的性能提升和新语法在代码简洁性上的优势,为开发者提供了从安装到实战的完整指南。

weixin_30399821的博客 204

Flink 1.20 实战:MySQL 实时同步到 ClickHouse

基于 Flink 1.20 + Flink CDC 3.5,监听 MySQL Binlog 实现到 ClickHouse 的实时同步,取代 T+1 批量同步。文中给出 Binlog 开启与最小权限账号配置、Maven 依赖、Flink SQL 建源表与 JDBC 批量写入代码,用 ReplacingMergeTree 按 _version 去重保幂等、Checkpoint 保证 Exactly-Once,并附时区、打包 SPI、去重等常见问题解决。

fengquan8866的博客 1122

保姆级避坑指南:用Livox官方工具搞定Mid-360多雷达自动标定(附源码Bug修复)

本文详细解析了使用Livox官方工具进行Mid-360多雷达自动标定的全流程,包括环境搭建、工具链配置、关键Bug修复及数据采集最佳实践。重点解决了PointCloudMapper.cpp边界检查缺失和calibration.cpp点云显示问题,提供了实用的代码修复方案和标定质量评估指标,帮助开发者高效完成激光雷达标定任务。

weixin_29053695的博客 281

从零搭建Spark环境到数据分析实战:核心概念、避坑指南与最佳实践

大数据处理的核心在于高效、可扩展的计算框架。Apache Spark作为当前主流的大数据处理引擎,通过其内存计算和DAG执行引擎,解决了传统MapReduce因磁盘I/O导致的性能瓶颈。其技术价值在于统一了批处理、流处理、交互式查询和机器学习等多种计算范式,极大地提升了开发效率和执行性能。在应用场景上,Spark广泛应用于ETL、实时分析、数据挖掘等领域。本文聚焦于Spark开发中的环境搭建与核心概念解析,特别是针对RDD、DataFrame等核心抽象以及Spark运行架构进行深入讲解,并提供了从单机环境部

weixin_34242819的博客 371

深入浅出:UE4类型系统完整构建过程详解

UE4的类型系统是一个复杂但设计精巧的架构,它通过静态代码生成和运行时构建的完美配合,实现了强大的反射功能。理解这个过程不仅有助于解决开发中的问题,也能让你更好地利用UE4的各种高级特性。就像建造一栋大楼需要经过设计、备料、框架、装修、验收等多个阶段,UE4类型系统的构建也是一个多阶段、精细化的过程。每个阶段都有其特定的职责,共同协作完成从源代码到运行时对象的转换。

m0_45371381的博客 911

相机光学(三十八)——VCM(Voice Coil Motor)音圈马达

VCM(Voice Coil Motor)音圈马达全称Voice Coil Montor,电子学里面的音圈电机,是马达的一种。因为原理和扬声器类似,所以叫音圈电机,具有高频响、高精度的特点。其主要原理是在一个永久磁场内,通过改变马达内线圈的直流电流大小,来控制弹簧片的拉伸位置,从而带动上下运动。手机摄像头广泛的使用VCM实现自动对焦功能,通过VCM可以调节镜头的位置,呈现清晰的图像。弹片式结构滚珠式结构摩擦式结构Open loop开马达Close loop闭环马达。

图像学习之旅 7217

Java实现AirPlay投屏服务端:从协议解析到流媒体接收的完整实践

在跨平台协作和多媒体共享场景中,屏幕镜像与流媒体传输是核心技术。其原理基于服务发现、会话控制与实时传输协议栈,通过mDNS/DNS-SD实现设备发现,RTSP建立媒体会话,RTP承载音视频数据流。这项技术的工程价值在于打通异构设备间的投屏壁垒,实现低延迟、高画质的实时内容共享。应用场景广泛覆盖会议演示、家庭娱乐、远程协作等领域。本文聚焦于利用Java生态构建AirPlay接收端,通过Netty处理网络通信、JmDNS实现服务广播,并详细解析了RTSP信令交互与RTP数据包处理流程,为开发者提供了一套可运行的

weixin_30698297的博客 329

【网络与爬虫 53】Scrapy-Prometheus实战指南:打造企业级爬虫监控体系的终极解决方案

本文深入探讨Scrapy-Prometheus集成技术,通过费曼学习法从监控痛点出发,详细讲解如何在Scrapy爬虫中集成Prometheus指标收集系统。涵盖从基础配置到企业级监控体系的完整实战指南,帮助开发者构建可观测性强、可维护性高的分布式爬虫监控平台,实现爬虫性能的精准监控和智能告警。

熵数实验室 1584

java-maven打包的3种方式(shade、assembly、maven-jar-plugin和maven-dependency-plugin)

1、使用maven-shade-plugin插件打包 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <tar.

qq_40308101的博客 5390

【虚幻引擎UE】UE5 仅需6步轻松实现关卡顺滑切换

【虚幻引擎UE】UE5 仅需6步轻松实现关卡切换

灵境引路人 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Maven - 打包之争:Jar vs. Shade vs. Assembly

Maven 提供了多种打包方式,其中常见的包括三种:jar、shade、assembly。Jar 打包方式:这是最常见的打包方式,它创建一个标准的Java JAR文件。简单直接,适用于大多数简单项目。不能包含项目的依赖,如果项目有外部依赖,用户必须手动将它们添加到类路径中。Shade 打包方式:Maven Shade插件允许创建一个可执行的JAR文件,其中包含所有依赖。生成一个独立的可执行JAR,无需用户手动添加依赖。可能会导致JAR文件较大,不适合所有项目。

小工匠 9332

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

maven-shade-plugin 入门指南

有时候,需要将复杂的项目, 包括各种xml文件属性文件, 类, jar等等打包到一个可以执行的jar包中, 然后用java -jar xxx.jar 来运行项目, 这样简单方便, 特别是在编写一些测试工具时,尤为重要。 但是经常发现打包后的项目无法启动, 其中一大类是您项目有问题, 但是这个相对好解决, 毕竟自己的项目可以在windows下的ide中做各种调试,测试都测试好了, 在打包一般程序...

z69183787的专栏 1540

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

maven归纳:(2)核心

目录 1 maven坐标 1.1 什么是坐标? 1.1.1Maven坐标主要组成 1.2 依赖管理 1.3 依赖传递 1.3.1 直接依赖和间接依赖 1.3.2 路径优先者优先 1.3.3 第一声明优先 1.3.4 就近原则 1.3.5 依赖冲突 1.4 可选依赖 1.5 排除依赖 1.6 生命周期 1.6.1 什么是生命周期? 1.7 依赖继承 1.8 父工程中......

上善若泪 4166

【Maven】使用maven-jar、maven-assembly、maven-shade优雅的实现第三方依赖一同打Jar包

- **maven-jar-plugin** maven 默认打包插件【springboot默认使用该方式打包】,用来创建` project jar` - **maven-shade-plugin** 用来打可执行包,executable(fat) jar - **maven-assembly-plugin** 支持`定制化打包方式`,例如 apache 项目的打包方式

墩墩分墩 3540

maven项目如何打包运行指定java程序(maven-shade-plugin插件的使用)

把整个项目(包含它的依赖)都打包到一个 “uber-jar” 中;shade - 即重命名某些依赖的包。按需选择要添加到最终 jar 包中依赖;重定位 class 文件;生成可执行 jar 包;生成项目资源文件。

进击的豌豆的博客 7975
上一篇: Maven程序打包成单个Jar Part 1 -- Maven assembly plugin
下一篇: Powermock and sonar jacoco的覆盖率不兼容问题解决 1
开心的D哥
博客等级 码龄22年 63粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值