我想分发一个我在一些许可许可下编写的Java包。
结果speedytools-0.1.jar
有一些常见的Java依赖项,如Apache Commons和Guava。
分发此jar的Java风格最多的方法是什么?我应该在我的分布式zip文件中包含依赖项吗?
答案 0 :(得分:6)
您不应该在jar中包含依赖项。只需将它们声明为maven依赖项。
这将带来几个好处:
用户可以使用您的库 与任何向后兼容版本的独立Guava结合使用。
用户可以通过排除番石榴传递来减少依赖计数 如果他使用你的图书馆的部分,你的图书馆的依赖性 不依赖番石榴。
答案 1 :(得分:2)
jarjar:“自2004年以来嵌入了java库。”
您不必担心您的库,具体取决于特定版本的依赖项,这可能与其他库的依赖项冲突。
如果您在将来的版本中添加依赖项,则可以自由更改库 - 用户无需重新配置其构建脚本。
您可以修补库以满足您的需求:如果您想要对这些常见Java依赖项之一进行特殊构建,那么您将无法与公共版本兼容。 / p>
这使得下载和实施您的软件包的整个过程非常简单。这有利(甚至是可取的)的程度显然取决于您的软件包是什么,它的作用以及你希望它为谁做的。不可否认,在大多数我能想象到的用例中,我都赞成maven解决方案 - 但是,我认为jarjar肯定在一个问题中有一个像这个一样开放的地方,因为当然还有用例这是理想的。
ps很棒的问题,期待看到其他答案。