我想发布一个我写的Java包,使用宽松许可证。生成的
speedytools-0.1.jar
包含一些常见的Java依赖项,如Apache Commons和Guava。最符合Java风格的分发这个jar文件的方式是什么?我应该在我的发布zip文件中包含这些依赖项吗?speedytools-0.1.jar
包含一些常见的Java依赖项,如Apache Commons和Guava。最符合Java风格的分发这个jar文件的方式是什么?我应该在我的发布zip文件中包含这些依赖项吗?你不应该将依赖包包含在你的jar中。只需将它们声明为Maven依赖项即可。
这将提供多个优点:
用户可以与任何向后兼容的独立Guava版本一起使用你的库。
如果用户只使用你库中不依赖于Guava的部分,可以从你的库中排除Guava传递依赖项以减少依赖项数目。
jarjar: "自2004年以来嵌入Java库。"
您不必担心您的库依赖于特定版本的依赖项,这可能与另一个库的依赖项冲突。
如果您在将来的版本中添加了依赖项,则可以自由更改您的库 - 用户无需重新配置构建脚本。
您可以修补库以适应您的需求:如果您想要其中一个常见Java依赖项的特殊版本,则可以进行修改 - 您的构建甚至不需要与公共版本兼容。
它使下载和实施您的软件包的整个过程变得非常简单。这对于您的软件包是什么、它做什么以及您希望谁使用它的程度显然有所益处(或者甚至是可取的)。诚然,在我能想象到的大多数用例中,我会倾向于Maven解决方案 - 但毫无疑问,我认为jarjar绝对在这样一个开放性问题中有一席之地,因为肯定还有适合它的用例。
附言:很棒的问题,期待看到其他答案。