Shading

编辑

为了避免版本冲突,可以将依赖项进行 Shading 并打包到客户端的单个 JAR 文件中(有时称为 “uber JAR” 或 “fat JAR”)。Shading 依赖项包括获取其内容(资源文件和 Java 类文件),并在将其放入与低级别 Java REST 客户端相同的 JAR 文件之前,重命名其某些包。可以通过 Gradle 和 Maven 的第三方插件来实现 JAR 包的 Shading。

请注意,Shading JAR 包也会带来一些影响。例如,Shading Commons Logging 层意味着也需要 Shading 第三方日志后端。

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'
}