首页  

maven-shade-plugin 使用指南     所属分类 maven 浏览量 1755
jar包冲突,业界解决方案包括osgi, java modules,springboot式的超级pom文件,各种DIY classloader方案 。
一个可选的方案 ,使用 maven-shade plugin ,
将sdk与容易冲突的依赖包如 httpclient 打在一起,修改httpclient的包名 xxx.org.apache

可执行jar
java -jar -Dname=tiger shadedemo-1.0-dyyx.jar
java -Dname=tiger -jar shadedemo-1.0-dyyx.jar


maven-shade-plugin 将 goal shade:shade 绑定到 phase package 上

生成一个 uber-jar,以 -shaded.jar 为后缀的 jar 包

Selecting Contents for Uber JAR
依赖 exclude 

自动将不使用的类全部排除掉
minimizeJar

Attaching the Shaded Artifact
默认会生成一个Jar包和一个以 -shaded 结尾的uber-jar包,可以配置指定uber-jar的后缀名

Executable JAR
设置 MainClass 创建一个可执行 Jar 包

Relocating Classes
冲突类重命名


插件配置

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>2.4.3</version>
				<configuration>
					<minimizeJar>true</minimizeJar>
					<shadedArtifactAttached>true</shadedArtifactAttached>
					<shadedClassifierName>dyyx</shadedClassifierName>
					<filters>
						<filter>
							<artifact>*:*</artifact>
							<excludes>
								<exclude>**/*.sql</exclude>
								<exclude>**/*.groovy</exclude>
								<exclude>**/*.xml</exclude>
								<exclude>**/*.properties</exclude>
								<exclude>**/*.txt</exclude>
								<exclude>META-INF/services/*</exclude>
							</excludes>
						</filter>
					</filters>

					<transformers>
						<transformer
							implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
							<mainClass>dyyx.Hello</mainClass>
						</transformer>
					</transformers>


					<relocations>
						<relocation>
							<pattern>org.apache.commons.lang3</pattern>
							<shadedPattern>org.shade.commons.lang3</shadedPattern>
						</relocation>
					</relocations>

				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
					</execution>
				</executions>
			</plugin>


META-INF/MANIFEST.MF
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dugang
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_121
Main-Class: dyyx.Hello




完整代码
https://gitee.com/dyyx/demos/tree/master/shade

上一篇     下一篇
springboot 使用 servlet 过滤器

springboot 使用 拦截器

问题排查命令和工具及实战案例

maven-assembly-plugin 和 maven-shade-plugin

领悟人生金句

OLAP术语