maven-shade-plugin插件就能够帮我们把项目依赖的包也打进最终文件。 plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin 参考 Apache Maven Shade Plugin maven-shade-plugin 简书
默认打包生成的jar是不能直接运行的,因为带有main方法的信息不会添加到mainifest中,需要借助maven-shade-plugin <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</
Maven Assembly Plugin 和 Shade Plugin 都可以用来在构建单一 Jar 包时,将所有 Dependency 打入这个最终生成的 Jar 中去。 但是两者在具体的行为上有所不同:Assembly 插件不仅会将 Dependency 中的 Class 文件打入最终的 Jar 包,还会将 Dependency 中的资源文件,诸如 properties 文件打入最终的 Jar 包。 当项目和其 Dependency 中有同名的资源文件是,就会发生冲突,项目中的同名文件便不会加入到最终的 Jar 包中。 如果这个文件是一个关键的配置文件,便会导致问题。而 Shade Plugin 不存在这样的问题。
概述 maven-shade-plugin 官网已经介绍的很详细了,我给大家简单翻译一下 This plugin provides the capability to package the artifact 这段话简明扼要的概述了 maven-shade-plugin 的功能 能够将项目连同其依赖,一并打包到一个 uber-jar 中 uber-jar 就是一个超级 jar,不仅包含我们的工程代码,还包括依赖的 jar,和 spring-boot-maven-plugin 类似 能够对依赖 jar 中的包名进行重命名 这个功能就有意思了,后面我们详说 maven-shade-plugin 必须和 Maven 构建生命周期的 package 阶段绑定,那么当 Maven 执行 mvn package 时会自动触发 maven-shade-plugin;使用很简单,在 pom.xml 添加该插件依赖即可 更实际的案例,敬请期待我下篇博客 总结 maven-shade-plugin 的输入目标是 项目原始jar 以及 项目依赖的所有jar,而输出目标是 uber-jar,所以 maven-shade-plugin
maven-shade-plugin就是其中一个非常有用的插件,它可以将项目的依赖库合并到最终的JAR文件中。什么是maven-shade-plugin? maven-shade-plugin是Maven的一个插件,用于创建包含项目所有依赖的“uber-jar”(超级JAR)。 如何配置maven-shade-plugin要在Maven项目中使用maven-shade-plugin,首先需要在项目的pom.xml文件中添加插件配置。 配置 pom.xml在 pom.xml 文件中,添加 maven-shade-plugin 的配置。 配置 maven-shade-plugin要在你的 Maven 项目中配置 maven-shade-plugin,你需要在项目的 pom.xml 文件中添加插件配置。
如何用 mysql-connector-java 5.1.49 从 MySQL 5.7.36 查数据后,用 mysql-connector-j 8.0.33 将数据插入 MySQL 8.0.30 maven-shade-plugin 中谈到了好些解决办法,但 maven-shade-plugin 相对而言是最优解,其具体使用可参考 maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器 那如何应该到当前案例中来了,其实很简单,只需要用到 maven-shade-plugin 的 重定位 class 功能即可,请看我表演 对 mysql-connector-j 8.0.33 进行 class mysql-connector-j 8 去连 MySQL 5.7的 SQL Server 就存在驱动不兼容的情况 Microsoft JDBC Driver for SQL Server 支持矩阵 maven-shade-plugin maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器
这个插件的扩展配置,比maven-shade-plugin复杂一些,于是放弃。 最后选择了在maven-shade-plugin基础再扩展一下。 扩展的思路 我并没采用直接修改maven-shade-plugin插件的方式,而是在maven-shade-plugin打包后的基础上,再进行插件定制。 之前,因为spring-factories-merge-plugin是对maven-shade-plugin打包后的结果进行二次加工。 如果maven-shade-plugin不放置顺序得在spring-factories-merge-plugin之前,则spring-factories-merge-plugin的执行阶段就要比maven-shade-plugin
Overview 插件:使用maven-shade-plugin插件 maven-shade-plugin提供了两大基本功能: 将依赖的jar包打包到当前jar包(常规打包是不会将所依赖jar包打进来的 ); 对依赖的jar包进行重命名(用于类的隔离); 使用 maven-shade-plugin 只存在一个goal shade:shade,需要将其绑定到 phase package 上 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin
这个功能很好实现在pom.xml中增加maven-shade-plugin插件执行就可以,如下: <plugin> <groupId>org.apache.maven.plugins</groupId > <artifactId>maven-shade-plugin</artifactId> <version>3.1.0</version> <executions> <execution 包到本地仓库时并不会生成项目对应的source.jar.只有mvn deploy发布到远程仓库时才会安装source.jar,如果我没有远程仓库,或不想发布到远程仓库,或者我只是在开发期频繁生成快照版本(SNAPSHOT),上述的maven-shade-plugin
当使用maven-assembly-plugin或者maven-shade-plugin打包时,如果涉及到证书文件,一定设置过滤,否则证书文件会被做修改。 *</include> </includes> <filtered>true</filtered> </fileSet> maven-shade-plugin: <configuration
namespace 这其实是maven-assembly-plugin的一个BUG,详见:https://issues.apache.org/jira/browse/MASSEMBLY-360 解决方案:使用maven-shade-plugin https://maven.apache.org/plugins/maven-shade-plugin/ 打包可独立运行的jar文件 <! -- 打包可执行jar文件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin 为了解决这个问题,可以在maven-shade-plugin中通过Resource Transformers将所有的spring.schemas文件中的内容都合并到一起。 -- 打包可执行jar文件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin
System.out.println("pcSerial: " + SystemInfoCollector.getPcSerial());}pom 加上 maven-jar-plugin(写入 Main-Class) 、maven-shade-plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin 但当同时用 maven-shade-plugin 生成一个 shaded (fat) jar 时,最终的 shaded JAR 的 manifest 可能不会自动来自 maven-jar-plugin maven-shade-plugin(打包 fat-jar)createDependencyReducedPom=false:默认 shade 会生成一个 dependency-reduced-pom(
于是,我们就去搜索相关的文章,果不其然,maven-shade-plugin正是那优雅的挠痒姿势,这个Maven插件的原理正是将类的包路径进行重新映射,达到隔离不兼容Jar包的目的。 三、maven-shade-plugin解决依赖冲突 最后如何来配置和使用maven-shade-plugin将Guava映射成我们自己定制的Jar包,实现与中间件Guava的隔离。 整个的过程还是比较清晰明了的,主要是创建一个Maven工程,引入依赖,配置我们要发布的仓库地址,引入编译打包插件和maven-shade-plugin插件,配置映射规则(标签之间部分),然后编译打包发布到 从问题出来,我们一步一步探寻问题的解决方案,最终的maven-shade-plugin插件方案虽然看似与手动自行维护代码本质一致,看似回到了原点,但其实最终的方案优雅性远比最开始高得多,正如人生的道路那样 如果遇到类似需要支持版本不兼容Jar包共存的场景,可以考虑使用maven-shade-plugin插件,这种方法比较轻量级,可用于项目中存在个别不兼容Jar包冲突的场景,简单有效,成本也很低。
maven默认打包生成的jar是不能够直接运行的,因为在jar文件的META-INF/MANIFEST.MF文中没有Main-Class一行,为了生成可执行的jar文件,需要借助maven的插件,maven-shade-plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin
今天我们就来对比三种主流方案:✅ maven-jar-plugin(轻量外置依赖)✅ maven-assembly-plugin(全家桶打包)✅ maven-shade-plugin(高级防冲突版)每种方式配真实 ▶️ 执行命令java -jar java-demo-jar-with-dependencies.jar✅ 优点:一个文件搞定,部署简单 ❌ 缺点:依赖类直接合并,容易因同名类冲突导致运行时错误方式三:maven-shade-plugin pom.xml 配置(基础版)<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin 一张表看懂怎么选插件是否含依赖是否可直接运行能否防冲突推荐场景maven-jar-plugin❌(外置)✅(需依赖目录)❌轻量部署、依赖独立管理maven-assembly-plugin✅✅❌快速打包、简单项目maven-shade-plugin
配置Maven构建包 使用Maven构建包只需要在pom.xml中添加如下插件(maven-shade-plugin)即可 <plugin> <groupId>org.apache.maven.plugins </groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.1
使用maven-jar-plugin和maven-dependency-plugin插件打包 2 方法二:使用maven-assembly-plugin插件打包在pom.xml中配置: 3 方法三:使用maven-shade-plugin 3 方法三:使用maven-shade-plugin插件打包 在pom.xml中配置: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin
maven-shade-plugin的出现,就可以解决这个问题的。 通过maven-shade-plugin插件的功能,就可以很容易做到这件事。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin
com.jenkov -DartifactId=first-benchmark -Dversion=1.0 可以看到生成的项目pom文件中主要是添加了两个jmh 的依赖和设置了maven-shade-plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId JMH与Springboot 在对Springboot项目做JMH基准测试时可能会因为maven-shade-plugin插件的问题打包报错,需要在JMH的maven-shade-plugin的插件配置中添加 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId
方法三:使用maven-shade-plugin插件打包 在pom.xml中配置: [html] view plain copy <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin