我个人所做的是确保我使用的任何库都没有明确禁止重新分发。如果他们这样做了,那你就不走运了。BSD 和 LGPL 都没有,所以你应该没问题。我想不出一个理智的开源许可证。
一旦您对重新打包和分发许可条款感到满意,您就需要确保在其他方面尊重它们。我发现以下步骤足以满足 99.99% 的开源许可证:
license.txt
在您的 JAR 文件的根目录下创建一个文件(有些人将其放入META-INF
,但我不知道对此没有任何规则或约定,并认为这只是一个偏好问题)。
- 列出您导入的所有外部库以及它们在
license.txt
.
- 写出所有适用于
license.txt
.
- 理想情况下,链接到每个图书馆的网站、下载页面和许可页面(如果有)。
这应该确保您不会违反任何主流许可证,但 GPL 除外。我不是律师,也不是 GPL 方面的专家,我给你的任何关于如何尊重 GPL 的建议最终都可能完全错误,所以我不想让你误入歧途。
您还可以做一些其他事情,但更多的是出于职业礼貌:
- 如果您正在编写面向用户的应用程序(Web 服务、UI 应用程序...),请链接到您在该
About
部分中使用的库。
- 让库的维护者知道您正在使用并打包它——一些作者喜欢使用他们的工具维护流行软件的列表。
虽然这听起来像是很多工作,但它比编写和维护实际的库要少得多。
编辑:我刚刚意识到您正在开发一个库,而不是一个应用程序。我的回答实际上并不适用于这种情况:将依赖项打包到库的 JAR 中是非常糟糕的形式。如果有的话,它会使第三方开发人员更难将您的库与现有的构建工具和依赖管理系统(maven、ant / ivy...)集成。
如果您想保持简单,只需将所有依赖项的 JAR 包含在/lib
分发文件的文件夹中即可。
重申我的观点:我相信通过将依赖项打包在库的 JAR 文件中而不是与它一起,您会疏远大多数开发人员。如果问题没有得到解决,我当然会提交错误报告并寻找替代方案。