这肯定是一个很常见的问题。应用程序依赖于库 A 和库 B。库 A 依赖于库 C-v1(库 C 的版本 1),库 B 依赖于库 C-v2(库 C 的版本 2)中的一些新引入的功能。当然,C-v2 库进行了一些重大重构,这意味着它无法向后兼容 C-v1 库。但库 C-v1 和库 C-v2 具有相同的包名和类名。
现在,应该可以有效地“重新命名空间”库 C-v1。例如,名为 com.example.MyClass 的类可以重新命名为 old.com.example.MyClass。应该完全有可能构建一个自动化工具,该工具采用二进制 JAR 并以这种方式更改所有包名称。
还应该可以更改依赖库中的引用。例如,库 A 中对库 C 的任何引用都应更改为指向新的包名称。
肯定已经有一个工具可以做到这一点吗?
(PS:我确信一些聪明的人会提到 OSGi,但我想将其作为一次性 Activity )。
最佳答案
jarjar做你所要求的:
You can avoid problems where your library depends on a specific version of a library, which may conflict with the dependencies of another library.
库将重新打包到您的 jar 中并在此过程中重命名。它还包括一个 Ant-Task。
关于java - 是否有任何工具可以重新命名 Java 库及其引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736130/