官方文档地址: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'
}
