3

具体示例:

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

问题:

有没有办法在 Java 中创建一个依赖于第 3 方库的库/jar,而不会强制使用您的库的人使用该库(或更糟糕的是,该库的版本)?

4

2 回答 2

2

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

于 2012-04-04T13:21:53.363 回答
1

如果您打算通过 Maven 分发二进制 jar,则不必担心“强制”依赖于使用该 jar 的任何人。任何使用 Maven 的人都完全习惯于被拖入传递依赖项。Maven 也有许多用于解决版本冲突的奇特代码。

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

于 2012-04-04T13:35:54.523 回答