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 如何理解版本 :prepare command?

java - Ivy 存储库有什么最佳实践或工具吗?

mysql - 在商业环境中使用 MySQL 是否合法?

open-source - 即将发布代码到野外

open-source - 商业产品中是否允许使用 MS-PL(Microsoft 公共(public)许可证)代码?

java - "Broken"本地存储库 - 我如何注意到?我怎样才能阻止它发生?

java - 无法从 dropwizard 项目中排除 logback-classic 依赖项

java - 在 Java 9 迁移期间未找到不兼容的类型、等式约束和方法

visual-studio - 检测 Visual Studio 许可证类型/分发 channel

ios - 作为公司员工工作时,每个 iOS 开发人员需要什么(许可/帐户)?