如何分发带有依赖项的开源jar?

时间:2013-04-23 10:26:01

标签: java jar dependency-management software-distribution

我想分发一个我在一些许可许可下编写的Java包。

结果speedytools-0.1.jar有一些常见的Java依赖项,如Apache Commons和Guava。

分发此jar的Java风格最多的方法是什么?我应该在我的分布式zip文件中包含依赖项吗?

2 个答案:

答案 0 :(得分:6)

您不应该在jar中包含依赖项。只需将它们声明为maven依赖项。

这将带来几个好处:

  • 用户可以使用您的库 与任何向后兼容版本的独立Guava结合使用。

  • 用户可以通过排除番石榴传递来减少依赖计数 如果他使用你的图书馆的部分,你的图书馆的依赖性 不依赖番石榴。

答案 1 :(得分:2)

jarjar:“自2004年以来嵌入了java库。”

  • 您不必担心您的库,具体取决于特定版本的依赖项,这可能与其他库的依赖项冲突。

  • 如果您在将来的版本中添加依赖项,则可以自由更改库 - 用户无需重新配置其构建脚本。

  • 您可以修补库以满足您的需求:如果您想要对这些常见Java依赖项之一进行特殊构建,那么您将无法与公共版本兼容。 / p>

  • 这使得下载和实施您的软件包的整个过程非常简单。这有利(甚至是可取的)的程度显然取决于您的软件包是什么,它的作用以及你希望它为谁做的。不可否认,在大多数我能想象到的用例中,我都赞成maven解决方案 - 但是,我认为jarjar肯定在一个问题中有一个像这个一样开放的地方,因为当然还有用例这是理想的。

ps很棒的问题,期待看到其他答案。