包括库,同时避免使用代码的代码冲突

时间:2012-04-04 13:16:00

标签: java

具体示例:

我正在编写一个库来提供给定的功能。在编写我的库时,我想使用Apache Commons(即StringUtils等),而不是重新发明轮子。不幸的是,如果我将该库包含在我的库中,或者作为一个单独的jar或者内置到我自己的jar(build-with-dependencies)中,我会强制Apache Commons使用我的库...而且我强制使用我使用的版本在他们身上。

问题:

有没有办法在Java中创建一个依赖于第三方库的库/ jar而不强迫那些使用你库的人使用该库(或者更糟的是那个库的版本)?

2 个答案:

答案 0 :(得分:2)

你知道jarjar吗? https://code.google.com/p/jarjar/

答案 1 :(得分:1)

如果你打算通过Maven分发一个二进制jar,你不应该过分担心“强迫”依赖任何使用jar的人。任何使用Maven的人都完全习惯于被拖入的传递依赖.Maven有很多用于解决版本冲突的奇怪代码。

如果你对此非常偏执,你可以使用shade插件创建一个带有依赖项的超级jar,并重命名所有依赖项的包:http://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html但是它并不是必需的。