Maven 许可

标签 maven licensing

我对将许可证信息放入 Maven 项目的各种方法有点困惑。

如果我将许可证放在 POM 文件内的标签中,这是否意味着我的整个项目都拥有该许可证?

如果我将 license.txt 文件放入项目中,这是否意味着该项目属于该许可证?

如果我将许可证放在我拥有的每个 .java 文件的开头会怎样?这是否意味着我编写的每个类都可以有不同的许可证?

当我的 POM 文件头中有许可证信息时,情况会怎样?这是否也意味着所有文件都受该许可证约束?

很困惑...

最佳答案

别担心,你不是唯一一个感到困惑的人。这个问题并不局限于Java。 Maven 至少提供了一种将项目分解为单独模块的机制,每个模块都有一个描述模块许可证的元数据文件 (POM)。

问题是作为一个软件用户,希望遵守许可证,我如何确定所有文件(在软件包中)都属于同一个软件许可证。一些开源许可证之间存在细微的差异和使用影响。

惠普开源了他们的许可扫描系统。

http://www.fossology.org/

这使组织能够扫描第 3 方库的源代码并发现许可证。此分析遵循随着时间的推移而出现的标准技术(自述文件中的许可证、注释标题中的许可证等)。对于喜欢外包这项工作的组织,有商业公司维护开源软件的数据库:

隧道尽头有一些曙光。 Linux 基金会已发起一项计划来解决此问题:

http://spdx.org/

这是个好主意。创建一个单一标准,允许软件开发人员明确声明每个文件的许可证。该小组的一项真正成功是收集了一份通用的许可证名称列表。在我看来,唯一的缺点是缺乏开发人员采用和工具支持。

总之,我建议将所有文件保留为同一许可证的 Maven 模块一部分。假设您的模块是开源的,请在注释 header 中指出该许可证并在 Maven POM 中发布该许可证。如果您的代码是闭源的,在我看来,将许可证放入 META-INF 目录会有所帮助,但并不能完全解决合规性问题。

关于Maven 许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227812/

相关文章:

java - 使用手动下载的依赖项运行 Maven 构建

java - XText 项目的 Maven 依赖关系

licensing - 发布要通过注册购买的软件的步骤

azure - 如何将 Visual Studio Online Professional 许可证应用于 Visual Studio 2013

api - 出色的基本许可证安装

java - 处理桌面应用程序的特定 Java 版本

Maven 父项目上的 Maven 部署失败

maven - Grails 无法启动,卡在 postProcessBeanFactory

android - 生成设备特定的序列号

licensing - LGPL 是否吓跑了潜在的企业 "clients"?