Gradle 库中的依赖项被 Spring 引导隐藏
Gradle dependency in library being shadowed by Spring Boot
场景。我编写的 LibraryA 需要使用较新版本的库(在本例中为 Caffeine,特别是 v2.6.2)。我将构建此工件并将其上传到我们的构建工件
LibraryA 旨在供其他团队(我不知道)在较旧的 Spring Boot 1.5 环境中使用。问题是 Spring Boot 内部使用旧版本的 Caffeine 2.3.5(尽管对我来说,它可以使用更新的版本)。
我看到的是在运行时,旧版本支配新版本导致 class 在我的库中找不到异常
有什么办法可以强制我的图书馆始终使用所需的较新 Caffeine 版本。如果我可以使用我的库控制代码,这将很容易做到,但我想在我的库范围内完成它。我尝试了 gradle 文档中的所有依赖项解析策略,但它们总是被调用 (spring-boot) 应用程序覆盖
您应该使用从 gradle shadow plugin 重定位的包。
在您的情况下,您只需将以下内容添加到您的构建中:
shadowJar {
relocate 'com.github.benmanes.caffeine', 'shadow.caffeine'
}
场景。我编写的 LibraryA 需要使用较新版本的库(在本例中为 Caffeine,特别是 v2.6.2)。我将构建此工件并将其上传到我们的构建工件
LibraryA 旨在供其他团队(我不知道)在较旧的 Spring Boot 1.5 环境中使用。问题是 Spring Boot 内部使用旧版本的 Caffeine 2.3.5(尽管对我来说,它可以使用更新的版本)。
我看到的是在运行时,旧版本支配新版本导致 class 在我的库中找不到异常
有什么办法可以强制我的图书馆始终使用所需的较新 Caffeine 版本。如果我可以使用我的库控制代码,这将很容易做到,但我想在我的库范围内完成它。我尝试了 gradle 文档中的所有依赖项解析策略,但它们总是被调用 (spring-boot) 应用程序覆盖
您应该使用从 gradle shadow plugin 重定位的包。
在您的情况下,您只需将以下内容添加到您的构建中:
shadowJar {
relocate 'com.github.benmanes.caffeine', 'shadow.caffeine'
}