官方文档地址:Shading


为了避免版本冲突,可以对依赖项进行遮蔽,并将其打包在客户端内的单个 JAR 文件中(有时称为“uber JAR”或“fat JAR”)。对依赖项进行遮蔽包括获取其内容(资源文件和 Java 类文件),并在将其一些包放入与 low-level Java REST客户端相同的 JAR 文件之前重命名它们。为 JAR shading 可以通过第三方插件 Gradle 和 Maven 来完成。

请注意,遮蔽 JAR 也会产生影响。例如,遮蔽公共日志记录层意味着第三方日志后端也需要遮蔽。

Maven 配置

下面是使用 Maven Shade 插件的配置。添加以下内容到你的pom.xml文件:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-shade-plugin</artifactId>
  6. <version>3.1.0</version>
  7. <executions>
  8. <execution>
  9. <phase>package</phase>
  10. <goals><goal>shade</goal></goals>
  11. <configuration>
  12. <relocations>
  13. <relocation>
  14. <pattern>org.apache.http</pattern>
  15. <shadedPattern>hidden.org.apache.http</shadedPattern>
  16. </relocation>
  17. <relocation>
  18. <pattern>org.apache.logging</pattern>
  19. <shadedPattern>hidden.org.apache.logging</shadedPattern>
  20. </relocation>
  21. <relocation>
  22. <pattern>org.apache.commons.codec</pattern>
  23. <shadedPattern>hidden.org.apache.commons.codec</shadedPattern>
  24. </relocation>
  25. <relocation>
  26. <pattern>org.apache.commons.logging</pattern>
  27. <shadedPattern>hidden.org.apache.commons.logging</shadedPattern>
  28. </relocation>
  29. </relocations>
  30. </configuration>
  31. </execution>
  32. </executions>
  33. </plugin>
  34. </plugins>
  35. </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'
}