Maven Shade Plugin如何解决依赖冲突?
时间: 2024-10-14 08:18:39 浏览: 44
java 中使用maven shade plugin 打可执行Jar包
Maven Shade Plugin是一个强大的插件,用于处理Java项目的依赖管理问题,特别是当项目存在依赖冲突时。它可以帮助将所有依赖项打包到一个单独的JAR文件或者一个独立的可执行JAR中,这个过程被称为"shade"或"包装"。通过Shade Plugin,你可以:
1. **Repackaging**:它会合并所有依赖库及其依赖,消除重复的类路径冲突,使得最终发布的JAR包内只有一个版本的每个类。
2. **Renaming**:Shade可以更改依赖库的名称和类名,防止名字冲突,这对于私有化依赖(如Spring Boot的自动配置)特别有用。
3. **Creating Custom JARs**:除了简单的JAR打包,还可以创建包含主程序和其他自定义配置的可执行JAR(fat/Jar),方便部署和运行。
使用Shade Plugin时,你需要在pom.xml中添加配置,并指定哪些依赖需要被shaded。比如:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>your.MainClass</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<!-- 过滤掉不必要的META-INF信息 -->
<artifactSet>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</artifactSet>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
```
阅读全文