官方文档地址:Shading
为了避免版本冲突,可以对依赖项进行遮蔽,并将其打包在客户端内的单个 JAR 文件中(有时称为“uber JAR”或“fat JAR”)。对依赖项进行遮蔽包括获取其内容(资源文件和 Java 类文件),并在将其一些包放入与 low-level Java REST客户端相同的 JAR 文件之前重命名它们。为 JAR shading 可以通过第三方插件 Gradle 和 Maven 来完成。
请注意,遮蔽 JAR 也会产生影响。例如,遮蔽公共日志记录层意味着第三方日志后端也需要遮蔽。
Maven 配置
下面是使用 Maven Shade 插件的配置。添加以下内容到你的pom.xml
文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>shade</goal></goals>
<configuration>
<relocations>
<relocation>
<pattern>org.apache.http</pattern>
<shadedPattern>hidden.org.apache.http</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.logging</pattern>
<shadedPattern>hidden.org.apache.logging</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.codec</pattern>
<shadedPattern>hidden.org.apache.commons.codec</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.logging</pattern>
<shadedPattern>hidden.org.apache.commons.logging</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Gradle 配置
下面是一个使用 Gradle ShadowJar 插件的配置。将以下内容添加到build.gradle
文件:
shadowJar {
relocate 'org.apache.http', 'hidden.org.apache.http'
relocate 'org.apache.logging', 'hidden.org.apache.logging'
relocate 'org.apache.commons.codec', 'hidden.org.apache.commons.codec'
relocate 'org.apache.commons.logging', 'hidden.org.apache.commons.logging'
}