隐藏编辑

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

请注意,隐藏 JAR 也会产生影响。例如,隐藏 Commons Logging 层意味着还需要隐藏第三方日志记录后端。

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