一、介绍 1
This plugin provides the capability to package the artifact in an uber-jar, including its dependencies and to shade - i.e. rename - the packages of some of the dependencies.
maven-plugin-shade 插件提供了两个能力:
- 把整个项目(包含它的依赖)都打包到一个 “uber-jar” 中
- shade - 即重命名某些依赖的包
由此引出了两个问题:
-
什么是 uber-jar ?
uber-jar 也叫做 fat-jar 或者 jar-with-dependencies,意思就是包含依赖的 jar。
-
什么是 shade ?
shade 意为遮挡,在此处可以理解为对依赖的 jar 包的重定向(主要通过重命名的方式)。
💁♂ 下文中可能使用 shade 来代替 maven-plugin-shade。
二、基本使用 2
maven-plugin-shade 必须和 Maven 构建生命周期中的 package 阶段绑定,也就是说,当执行 mvn package
时会自动触发 shade。
要使用 maven-plugin-shade,只需要在 pom.xml 的 <plugins>
标签下添加它的配置即可,示例如下:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<configuration>
<!-- 此处按需编写更具体的配置 -->
</configuration>
<executions>
<execution>
<!-- 和 package 阶段绑定 -->
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
默认情况下会把项目所有的依赖都包含进最终的 jar 包中。当然,我们也可以在 <configuration>
标签内配置更具体的规则。
三、常用功能
3.1 按需选择要添加到最终 jar 包中依赖 3
使用 <includes>
排除不需要的依赖,示例如下:
<configuration>