Shading

为了避免版本冲突,可以在单个JAR文件(有时称为“uber JAR”或“fat JAR”)中将客户端中的依赖项隐藏并打包在客户端中。 Shading JAR可以通过GradleMaven的第三方插件完成。

请注意,Shading JAR也有影响。 例如,Shading Commons Logging层意味着第三方日志记录后端也需要被shaded 。

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 文件中:

  1. shadowJar {
  2. relocate 'org.apache.http', 'hidden.org.apache.http'
  3. relocate 'org.apache.logging', 'hidden.org.apache.logging'
  4. relocate 'org.apache.commons.codec', 'hidden.org.apache.commons.codec'
  5. relocate 'org.apache.commons.logging', 'hidden.org.apache.commons.logging'
  6. }