我的用例:
使用Gradle Shadow 插件构建一个带有重新定位的 Google Guice 依赖项的 Java 库(可能是每个其他的 dep),以避免下游项目中的依赖项问题,但保留其他依赖项的原样。这意味着下游项目仍然通过 Maven 存储库获取这些依赖项,因为它们是在库 pom.xml 中定义的。
我认为这是使用这个插件的主要原因之一,重新定位依赖项,但仍然像以前一样为您提供作为普通库的项目。对我来说,配置我的用例并不是很直观。我只想启用重定位而不创建fatjar。
我的示例项目按预期工作,但我不喜欢我需要将依赖项定义为shadow
和两次implementation
。
shadow => 依赖项作为运行时依赖项添加到已发布的 pom 中(参见代码)
implementation => 用于编译项目本身的依赖项,例如在您的 IDE 中。
你知道更好的方法吗?
更新:
我的示例项目中的配置适用于 Guice 依赖项,因为它按预期重新定位,但缺少传递依赖项。当然这会导致 ClassNotFoundExecption (在我的真实项目中),因为 Guice 没有找到自己依赖的类。