ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用Java重新打包库JAR

2019-05-29 15:49:12  阅读:285  来源: 互联网

标签:java packaging licensing jar


我一直在将第三方库JAR提取到我的开源Java库中,以便依赖项在运行时工作.

我记得当我在Eclipse中尝试这样做的时候(不同的项目)它产生了警告,在执行此操作之前检查许可.

关于什么时候可以将库内容重新打包到JAR中,应该如何完成以及哪些广泛使用的许可证禁止它的一般规则究竟是什么?

具体来说,我重新打包的库使用BSD和LGPL.

在此先感谢您的帮助.

编辑

我实际上最终分离出依赖项以防止代码冲突,正如几位评论者所建议的那样.再次感谢您提供的建议和信息.

解决方法:

我个人所做的是确保我使用的库都没有明确禁止重新分发.如果他们这样做,那你就不走运了.既不是BSD也不是LGPL,所以你应该没问题.我想不出一个理智的开源许可证.

一旦您满意,您不会通过重新包装和分发许可证来违反许可条款,您需要确保在其他方面尊重它们.我发现以下步骤足以满足99.99%的开源许可证:

>在JAR文件的根目录下创建一个license.txt文件(有些人把它放在META-INF中,但我知道没有规则或约定,并认为这只是一个偏好问题).
>列出您导入的所有外部库以及在license.txt中分发它们的许可证.
>写下license.txt中适用的所有许可证的完整文本.
>理想情况下,链接到每个图书馆的网站,下载页面和许可页面(如果有).

这应该确保您不会违反任何主流许可证,除了GPL.我不是律师,也不是GPL的专家,我给你的关于如何尊重它的任何建议可能最终都是完全错误的,所以我宁愿不让你误入歧途.

还有一些你可以做的事情,但更多的是礼貌的问题:

>如果您正在编写面向应用程序的用户(webservice,UI应用程序……),请链接到您在“关于”部分中使用的库.
>让图书馆的维护者知道你正在使用和打包它 – 一些作者喜欢使用他们的工具维护一份流行的软件列表.

虽然这可能听起来像很多工作,但它的工作远远少于编写和维护实际库.

编辑:我刚刚意识到你正在开发一个库,而不是一个应用程序.在这种情况下,我的答案实际上并不适用:将您的依赖项打包到库的JAR中是非常糟糕的形式.如果有的话,它使第三方开发人员更难将您的库与现有的构建工具和依赖管理系统(maven,ant / ivy ……)集成.

如果您想保持简单,只需将所有依赖项的JAR包含在分发文件的/ lib文件夹中.

重申我的观点:我相信你会通过将依赖项打包到库的JAR文件而不是它中来疏远大多数开发人员.如果没有解决问题,我当然会提交错误报告并寻找备选方案.

标签:java,packaging,licensing,jar
来源: https://codeday.me/bug/20190529/1179080.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有