我正在创建一个android库,它最终将用于我的许多应用程序。假设这个库与1.0版有一个依赖关系X。如果主应用程序想要在0.5版中使用依赖项X怎么办?我不想让主应用程序经历通过gradle排除依赖项的过程。还有别的办法吗?我正在考虑更改名称或为我的库中的依赖项指定别名?这有可能吗?
发布于 2021-10-07 17:18:38
如果gradle在依赖关系图中找到一个依赖关系的两个(或更多)版本,它将默认选择最新版本。大多数库都保证向后兼容,因此这通常可以很好地工作。Gradle还提供了大量的钩子,让客户选择不同的策略。
如果您确实希望实用程序的使用者在其类路径上具有两个版本的(共享/传递的)依赖项,则需要重新打包依赖项,以便每个类都移动到不同的包中,因为在类路径中每个(完全限定的)类名只能有一个版本
要重新打包jar,请看一下shadow plugin。许多库(例如hibernate和spring)选择重新打包/隐藏ASM jar以避免冲突。
请注意,99%的情况下重新打包jar是错误的选择,您应该让正常的依赖项解析过程发生。
https://stackoverflow.com/questions/69484994
复制相似问题