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

maven-shade-plugin不会替换原来的jar

maven-shade-plugin是Maven构建工具中的一个插件,用于创建可执行的JAR文件,并且可以将所有依赖的类库打包到生成的JAR文件中,以便于在其他环境中运行。

该插件的主要功能是将项目的源代码和依赖的类库打包成一个可执行的JAR文件,同时解决了传统JAR文件中存在的类库冲突问题。它通过将所有依赖的类库重新打包,并将原始的类库替换为新的打包后的类库,从而确保生成的JAR文件中不会出现冲突。

然而,maven-shade-plugin并不会替换原来的JAR文件。它只是在构建过程中创建一个新的JAR文件,并将所有依赖的类库打包到其中。原始的JAR文件仍然存在,并且不会被修改或替换。

maven-shade-plugin的优势在于可以简化项目的部署和依赖管理。通过将所有依赖的类库打包到生成的JAR文件中,可以减少对外部环境的依赖,使得项目更加独立和可移植。此外,它还可以解决类库冲突的问题,确保项目在不同环境中的正常运行。

适用场景:

  1. 当项目需要打包成一个可执行的JAR文件,并且需要将所有依赖的类库打包到其中时,可以使用maven-shade-plugin。
  2. 当项目存在类库冲突问题,需要解决冲突并打包成一个独立的JAR文件时,也可以使用该插件。

腾讯云相关产品和产品介绍链接地址: 腾讯云提供了丰富的云计算产品和服务,以下是一些与maven-shade-plugin相关的产品和服务:

  1. 云服务器(CVM):提供可扩展的云服务器实例,用于部署和运行Java应用程序。链接地址:https://cloud.tencent.com/product/cvm
  2. 云存储(COS):提供高可靠、低成本的对象存储服务,用于存储和管理项目的依赖库和生成的JAR文件。链接地址:https://cloud.tencent.com/product/cos
  3. 云开发(CloudBase):提供一站式后端云服务,包括云函数、云数据库、云存储等,用于支持全栈开发和部署。链接地址:https://cloud.tencent.com/product/tcb

请注意,以上链接仅供参考,具体的产品和服务选择应根据实际需求和项目要求进行评估和选择。

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

相关·内容

maven打一个可执行的jar包

Alternatively use "${project.build.directory}/classes/lib" as OutputDirectory to integrate all jar-files into the main jar, but then you will need to add custom classloading code to load the jars. 如上,上面可以将依赖的jar包copy到 target下面的 lib/ 目录下。然后生成jar包。 注意一点是,你的jar包只是包含你自己的代码,并不会把lib/目录下的jar一起打进你的jar中去。 这个时候,你可以执行 java -jar theMainClass 来运行你的程序。 如果你想把所有的依赖jar都打包到你的jar里面去,成为单个jar。 那么你可以将 dependency-plugin 的output设置为 "${project.build.directory}/classes/lib" 这样就可以打成单个jar包了。 但是,这个时候,你执行 java -jar theMainClass 来运行的话,是运行不了的哦。会报ClassNotFound。 至于原因见下面: 你是否在使用java -jar参数运行打包好的jar应用程序的时候发现应用程序无法找到classpath下设置好的第三方类库的内容?无论怎么设置classpath参数都无济于事,总是会报ClassNotFound的错误?那么本篇帖子可以帮助你摆脱烦恼 :) 当 用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报 ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本身yourJarExe.jar的内部class作为类的寻找范围。 via: http://hi.baidu.com/daniel_tu/item/12e5434215c4052310ee1e8e 至于解决办法,上面的文章中有提到。个人觉得较好的是写个自定义的classLoader,来加载jar包内部的lib/目录下的class。 至此, 1).你通过maven来打一个可执行的jar包,要么选择不要把依赖jar包打到一起,而选择放在jar包外面的 lib/目录下。这样是可以的。 2).你也可以把依赖jar打到jar包内部,成为单个jar,是可以做到的,但通过java -jar方式执行会找不到类,需要自定义classLoader. 介绍第三种思路,允许打单独jar包,同时也可以通过 java -jar 来执行。 这种思路是将所有的依赖jar包解压开来变成class,打进我们的jar包里面去。POM如下:

02
领券