Maven构建为何生成3种不同JAR文件?求作用与差异解析
三个JAR文件的作用、生成原因及差异
在./target目录下的这三个JAR是Java项目构建(通常基于Maven/Gradle)过程中不同阶段、不同插件生成的产物,具体区别如下:
pluginName-version.jar- 作用:项目的标准核心构建产物,包含编译后的项目类文件、资源文件,部分场景下会包含合并后的依赖(取决于构建配置),是可直接用于运行或作为依赖引入其他项目的常规JAR。
- 生成原因:由构建工具的默认打包插件(如Maven Jar Plugin)生成,是项目构建流程的默认输出。
original-pluginName-version.jar- 作用:项目的原始未修改打包备份,仅包含你自己项目编译后的代码和资源,不包含任何第三方依赖,也没经过Shade这类插件的修改。
- 生成原因:当使用Maven Shade Plugin这类会修改原始JAR的插件时,插件会先将未处理的原始JAR备份为该文件,再基于它进行后续的依赖合并、包名重命名等操作。
pluginName-version-shaded.jar- 作用:经过Shade插件处理的胖JAR(Fat JAR),包含项目自身代码、资源,以及所有依赖的第三方库类文件,部分场景下会对依赖包名重命名以避免冲突,可直接独立运行,无需额外依赖环境。
- 生成原因:启用Shade/Shadow插件后,插件将项目代码与所有依赖打包到同一个JAR中,同时处理依赖冲突问题,最终生成该带
shaded后缀的产物。
内容的提问来源于stack exchange,提问作者xuanlam2007
相关产品推荐
相关产品推荐

