现在基本上都是采用maven来进行开发管理,我有一个需求是需要把通过maven管理的java工程打成可执行的jar包,这样也就是说必需把工程依赖的jar包也一起打包。而使用maven默认的package命令构建的jar包中只包括了工程自身的class文件,并没有包括依赖的jar包。我们可以通过配置插件来对工程进行打包,pom具体配置如下: maven-...
简介:Maven Shade Plugin是Maven的一个插件,主要用于解决大型项目中的依赖冲突和类冲突问题。它可以将所有依赖项打包到一个JAR文件中,创建一个“fat” JAR(也称为“uber” JAR),使得应用程序可以作为一个独立的可执行JAR运行。此外,它还可以重命名、移除或合并类来解决类冲突,减少JAR包数量,并将项目中的资源文件...
现在基本上都是采用 maven 来进行开发管理,我有一个需求是需要把通过 maven 管理的 java 工程打成可执行的 jar 包,这样也就是说必需把工程依赖的 jar 包也一起打包。而使用 maven 默认的 package 命令构建的 jar 包中只包括了工程自身的 class 文件,并没有包括依赖的 jar 包。我们可以通过配置插件来对工程进...
通过使用maven-shade-plugin插件进行 Maven 的打包操作,可以将项目中的依赖一同添加到最终的项目 Jar 包内,maven-shade-plugin插件有两个目标,我们要学习的是插件的shade目标,建议使用时与 Maven 生命周期的package阶段绑定 这中打包后带依赖的 Jar 包一般称为uper-jar或fat-jar 不管pom.xml是否声明了 Maven 的默认...
maven-shade-plugin 是一个 Maven 插件,用于创建包含所有依赖项的可执行 JAR(也称为 "fatJAR" 或 "uber JAR")。这个插件特别适用于解决 Jar 包冲突问题,因为它可以将多个依赖项合并到一个单独的 JAR 文件中,从而避免类路径上的冲突。 2. 分析项目结构,确定需要打包的多个jar包...
addClassPath:将该元素设置为true告知maven-jar-plugin添加一个Class-Path元素到 MANIFEST.MF 文件,以及在Class-Path元素中包括所有依赖项。 classpathPrefix:如果您计划在同一目录下包含有您的所有依赖项,作为您将构建的 JAR,那么您可以忽略它;否则使用classpathPrefix来指定所有依赖 JAR 文件的前缀。在清单 1 中,cl...
maven-shade-plugin 的输入目标是项目原始jar以及项目依赖的所有jar,而输出目标是uber-jar,所以 maven-shade-plugin 的规则对项目原始jar是无效的 minimizeJar针对的只是class,其他类型的文件不受此约束 同class 共存问题,可以利用 maven-shade-plugin 的 Relocating Classes 功能,将其中一个或多个 jar 重新打包成新的...
然后打包,uber-jar 内部结构如下所示 最小依赖 从maven-shade-plugin 1.6 开始,minimizeJar会保留filter中include配置的类,但是要注意: inlcude 默认会排除所有不在 include 配置中的类 这就会导致问题,我们来看个案例,我们引入logback依赖,但代码中未用到它,而我们又想将其下的 class 复制进 uber-jar,另外我们还...
把整个项目(包含它的依赖)都打包到一个 “uber-jar” 中 shade - 即重命名某些依赖的包 2. uber-jar Uber jar 的原始单词是Über jar,是一个德语单词,可以解释为 over 或 end,但在实际上下文中,将其翻译为 everything 可能更合适。所以uber-jar也就是将所有依赖和自己的代码都放到jar文件中,便于解决大多...
Maven打包之maven-shade-plugin 打包是一个比较头疼的事情,默认maven打包的结果只包含项目本身的代码,如果要执行代码,还得带上依赖。maven-shade-plugin插件就能够帮我们把项目依赖的包也打进最终文件。 shade打包过程 shade插件绑定在maven的package阶段,他会将项目依赖的jar包解压并融合到项目自身编译文件中。