【发布时间】:2015-05-01 13:08:22
【问题描述】:
典型问题 - 我有 x-1.0.jar、x-2.0.jar 和 y-1.0.jar。我想使用x-2.0.jar 和y-1.0.jar 但y-1.0.jar 依赖于x-1.0.jar。
有一个工具允许您将依赖项捆绑到单个 JAR 中并在内部更改包名称以避免冲突。例如,如果“x”包含“com.foo”包中的软件,那么它可以将x-1.0.jar中的所有类更改为“old.com.foo”包中的所有类,以及y-1.0.jar中的任何引用,所以我们可以创建一个新的 JAR xy-1.0.jar;这个 JAR 不会在 "com.foo" 包中包含任何公开的类,因此我们可以随意将它与x-2.0.jar 一起使用而不会发生冲突。
问题是,我完全忘记了那个工具叫什么名字!我们曾考虑在我的公司使用它,但我的管理层担心对类进行二进制级别的修改。但是现在(几年后)我们有一个类似的问题,它只影响测试代码,所以我想再次提出它。但是我完全忘记了这个名字!
我记得的事情:
- Google Code 上托管的开源代码
- 基于 ObjectWeb ASM 底层
- 我认为这个名字可能是某种描述的双关语
有谁知道这可能是什么工具?请帮帮我!
【问题讨论】:
-
@Jesper 谢谢,这看起来真的很有用!我爱 Maven!
-
@ChetanKinger 我不认为它与您标记为重复的那个相同。那个只是关于更改包名称,而我的则是专门解决依赖地狱。此外,“手动编辑 Jar 以更改包名称”不是问题。
-
@Kidburla 您的问题标题为
How do I change the package name of classes inside a JAR。您对自己的问题给出的答案是JarJar Links。我不明白一个问题与网站上的另一个问题问同样的问题并具有完全相同的答案是不是重复的?我们不能因为现有问题的措辞和内容达不到预期而提出新问题。 -
@ChetanKinger 我不认为它要求同样的事情。 “标题”是帖子的简短标题,而不是整个帖子本身。我可以将我的问题命名为“如何在 JAR 中重新打包依赖项,以便仅由其他依赖项使用的类不会导致与我的应用程序所需的更高版本的类路径冲突?”然而,这个标题有点太长了,不能成为 SO 上的最佳实践标题。不可避免地,当您缩短标题时,您将拥有两个相似(甚至相同,尽管此处不存在)的标题,它们实际上是在询问不同的内容。
标签: java jar java-bytecode-asm