首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

maven- shade -plugin: maven如何在不同的jar中着色相同的类?

Maven Shade Plugin是一个用于创建可执行的JAR文件的Maven插件。它可以将项目的所有依赖项打包到一个可执行的JAR文件中,并且还可以对其中的类进行着色。

要在不同的JAR中着色相同的类,可以通过配置Maven Shade Plugin的transformers来实现。transformers是一组用于转换JAR文件的规则,可以在打包过程中对类进行修改。

下面是一个示例的Maven Shade Plugin配置,用于在不同的JAR中着色相同的类:

代码语言:txt
复制
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>com.example.MainClass</mainClass>
              </transformer>
              <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.handlers</resource>
              </transformer>
              <!-- 其他的transformers配置 -->
            </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

在上述配置中,使用了两个transformers:

  1. ManifestResourceTransformer:用于设置生成的可执行JAR文件的主类。
  2. AppendingTransformer:用于将指定的资源文件追加到生成的JAR文件中。

你可以根据需要添加其他的transformers来实现更多的功能。

关于Maven Shade Plugin的更多信息和详细配置,请参考腾讯云的产品介绍链接地址:Maven Shade Plugin - 腾讯云

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈 java 构建可执行 jar几种方式

下面我们看看如何在 eclipse 构建一个可执行 jar 包。...关于项目的依赖,它很聪明地将依赖 JAR文件全部解压后,再将得到.class文件连同当前项目的.class文件一起合并到最终CLI包,这样,在执行CLI JAR文件时候,所有需要就都在Classpath...为此,使用  maven-dependency-plugin清单 2 所示: 清单 2....生成相对路径为:/org/codehaus/mojo artifactId: 项目的通用名称 version: 项目的版本 packaging: 打包机制,pom, jar, maven-plugin..., ejb, war, ear, rar, par classifier: 分类,它表示在相同版本下针对不同环境或者jdk使用jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应jar

3.7K50

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

缺点: 不能包含项目的依赖,如果项目有外部依赖,用户必须手动将它们添加到路径Shade 打包方式: 描述: Maven Shade插件允许创建一个可执行JAR文件,其中包含所有依赖。...Jar 打包方式_maven-jar-plugin Overview 使用maven-jar-plugin插件, 默认打包方式,用来打普通project JAR包 ....Shade 打包方式_maven-shade-plugin Overview 插件:使用maven-shade-plugin插件 maven-shade-plugin提供了两大基本功能: 将依赖jar...包打包到当前jar包(常规打包是不会将所依赖jar包打进来); 对依赖jar包进行重命名(用于隔离); 使用 maven-shade-plugin 只存在一个goal shade:shade,需要将其绑定到...outputDirectory 生成目录路径。 files/file 与fileSets大致相同,不过是指定单个文件,并且还可以通过destName属性来设置与源文件不同名称。

61310

Maven - 统一构建规范:Maven 插件管理最佳实践

maven-jar-plugin 通常与 Maven 其他插件一起使用, maven-compiler-pluginmaven-resources-plugin,以构建复杂应用程序。...这个例子展示了如何简单地使用 maven-jar-plugin 来打包 Maven 项目。在实际项目中,你可能还需要配置其他参数以满足不同需求。...新建一个 Maven 工程并在依赖中导入 Jackson 依赖库并进行打包编译,可以看到下图编译后 JAR 文件只有工程中新建 MyTest.class 文件,项目中所导入依赖并没有被一起打包...,与 assembly 不同Shade 提供了更灵活执行策略,可指定需要打包编译依赖集合。...另一个即实现包重命名功能,我们都知道 Maven 并不允许在一共工程同时引入单个依赖不同版本,而通过 Shade 插件即可实现二次包装从而绕开该限制。

1.1K30

如何利用Maven将代码打包成第三方公共jar包?

一、摘要 在项目开发过程,我们经常需要将一些公共方法提取出来,然后单独封装成一个第三方公共jar包,采用普通方式打包后jar,依赖工程执行编译时,却提示找不到对应依赖包,那么如何将工程打包为可执行...-- maven-shade-plugin不同shade可以将多个相同配置文件追加合并 --> org.apache.maven.plugins... maven-shade-plugin 2.4.1...2.2.3、验证jar是否可执行 在XXX.jar文件下,打开终端,输入如下命令 #验证jar是否可执行,如果没有报错,说明没有问题 java -jar XXX.jar 不同点:shade可以将多个相同配置文件追加合并...,比如,多个子项目下有相同配置文件,shade在打包时候,会将相同配置文件合并。

1.5K20

袋鼠云平台代码规范化编译部署提效性改进实践

maven-shade-plugin内含有大量资源转换器(Resource Transformers),可以通过追加策略来避免因不版本相同属性资源覆盖错误。...官方参考文档: https://maven.apache.org/plugins-archives/maven-shade-plugin-3.3.0/examples/resource-transformers.html...需要整合shell启停脚本和配置资源以及sql等输出标准适配EasyMR部署标准tar包,大致整个平台编译策略如下图: 通过上面的编译到产品包具体步骤,我们会发现,平台层通过maven-shade-plugin.../examples/single/including-and-excluding-artifacts.html) 做指定依赖包隔离,最终通过java -cp CLASSPATH 加载器加载路径策略将对应不同隔离...jar加载到加载器

47320

版本不兼容Jar包冲突该如何是好?

然后,我们在想,一个Java被加载到JVM虚拟机里区别于另一个Class,其一是它们俩全路径不一样,是风马牛不相及两个不同,但却是被不同加载器加载,在JVM虚拟机里它们仍然被认为是两个不同...和Pandora一样,SOFAArk也是通过使用不同 ClassLoader 加载不同版本三方依赖,进而隔离,彻底解决包冲突问题,这就要求我们需要将相关依赖打包成Ark Plugin(参见SOFAArk...于是,我们就去搜索相关文章,果不其然,maven-shade-plugin正是那优雅挠痒姿势,这个Maven插件原理正是将包路径进行重新映射,达到隔离不兼容Jar目的。...三、maven-shade-plugin解决依赖冲突 最后如何来配置和使用maven-shade-plugin将Guava映射成我们自己定制Jar包,实现与中间件Guava隔离。...如果遇到类似需要支持版本不兼容Jar包共存场景,可以考虑使用maven-shade-plugin插件,这种方法比较轻量级,可用于项目中存在个别不兼容Jar包冲突场景,简单有效,成本也很低。

2K30

聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

前言 不知道大家在开发过程,有没有遇到这种场景,外部项目想访问内部nexus私仓jar,因为私仓不对外开放,导致外部项目没法下载到私仓jar,导致项目因缺少jar而无法运行。...如果不进行处理,直接打包,就会出现同名配置文件覆盖情况 本文就是要来聊聊当多个jar合并成一个jar,如何解决多个同名配置文件覆盖情况 解决思路 通过maven-shade-plugin这个插件,利用插件...org.apache.maven.plugins.shade.resource.AppendingTransformer来处理处理多个jar存在重名配置文件合并。...扩展思路 我并没采用直接修改maven-shade-plugin插件方式,而是在maven-shade-plugin打包后基础上,再进行插件定制。...> 这边有个小细节是当maven-shade-plugin和spring-factories-merge-plugin执行生命周期都是相同阶段

1.6K70

maven 基础 maven-shade-pluginMaven Scopepom.xml 样例

maven-shade-plugin maven 工程超级打包,包括工程依赖及对依赖包重命名。...servlet.jar。 * runtime,只在运行时使用,JDBC驱动,适用运行和测试阶段。 * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。...* system,类似provided,需要显式提供包含依赖jarMaven不会在Repository查找它。 依赖范围控制哪些依赖在哪些classpath 可用,哪些依赖包含在一个应用。...system (系统范围) system范围依赖与provided 类似,但是你必须显式提供一个对于本地系统JAR 文件路径。这么做是为了允许基于本地对象编译,而这些对象是系统一部分。...注意该范围是不推荐使用(你应该一直尽量去从公共或定制 Maven 仓库引用依赖)。

1K40

在Java里面如何解决进退两难jar包冲突问题?

那么如何比较优雅解决这种进退两难困境问题呢?maven-shade-plugin出现,就可以解决这个问题。...它解决手段也非常简单,前面说明JVM加载器只会加载某个一次,是通过全路径包名+名来区分做到,我们要想加载不同版本同一个,有两种简单方式,第一种改名,第二种改包名。...通过maven-shade-plugin插件功能,就可以很容易做到这件事。...jar,并且这个组件也会自动修改es里面所有导入guava旧路径为改动后新路径,看如下从反编译后jar,拷贝出来文件信息: 改动后guavaMoreExecutors这个文件头部,变成了我们修改后包名...jar里面的es就只对这个版本guava进行了绑定依赖,这个时候在spark项目中,引入这个esuber-shade-jar,就不会发生冲突,通过使用不同包名完美解决了冲突问题,这两个都可以被同一个

3.1K40
领券