maven-shade-plugin
是 Maven 的一个插件,用于创建可执行的 JAR 文件,并且可以将所有依赖项打包到一个 JAR 文件中。
该插件的主要用途是创建包含所有依赖项的“fat” JAR(也称为“uber” JAR),使得应用程序可以作为一个独立的可执行 JAR 运行。
以下是 maven-shade-plugin
的一些常见用途和功能:
创建可执行 JAR 文件: 将项目及其所有依赖项打包到一个 JAR 文件中,使得可以通过简单的 java -jar
命令运行。
解决类冲突: 在大型项目中,可能会出现依赖项之间的类冲突,即多个依赖项中包含相同的类。maven-shade-plugin
可以通过重命名、移除或合并类来解决这些冲突。
减少 JAR 包数量: 在一些情况下,如果项目依赖的库很多,构建的 JAR 文件可能会包含大量的依赖 JAR 包。maven-shade-plugin
可以将这些依赖项合并到一个 JAR 文件中,减少 JAR 包数量。
包含资源文件: 将项目中的资源文件(如配置文件、属性文件等)和依赖项中的资源文件一并打包到 JAR 文件中。
以下是一个简单的 maven-shade-plugin
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<!-- 这里可以配置一些过滤规则,例如排除某些文件或包 -->
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在这个配置中,<createDependencyReducedPom>
设置为 false
表示不生成降级依赖的 POM 文件。<filters>
部分可以用于配置一些过滤规则,例如排除某些文件或包。
使用 maven-shade-plugin
时,需要注意潜在的问题