【问题标题】:Maven Licensing [closed]Maven许可[关闭]
【发布时间】:2012-03-02 22:10:49
【问题描述】:

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

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

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

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

如果我在 POM 文件的标头中有许可证信息,情况会怎样。这是否也意味着所有文件都在该许可证下?

好困惑……

【问题讨论】:

  • 我开始回答这个问题,但后来注意到这确实不像听起来那么容易。我会说它可以作为继承,但真的是这样吗?那么可能的双重许可呢?也在等待更聪明的人回答...
  • 我投票决定将此问题作为离题结束,因为它是关于许可或法律问题,而不是编程或软件开发。 See here 了解详情,help center 了解更多信息。

标签: maven licensing


【解决方案1】:

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

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

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

http://www.fossology.org/

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

隧道尽头有一些光亮。 linux 基金会已经开始着手解决这个问题:

http://spdx.org/

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

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

【讨论】:

    【解决方案2】:

    一个项目可以根据需要拥有不同的许可证。您可能希望拥有 Apache 许可证和 MIT、BSD 许可证。让您的代码拥有多个许可证的想法是能够让公司选择他们满意的许可证。

    这些许可证通常存储在 META-INF/LICENSE.* 文件中(例如 LICENSE.BSD、LICENSE.Apache 等)。

    如果您在 POM 中定义许可证,则意味着 Maven 站点插件将在生成 Maven 站点时使用该字符串。

    最好在每个类上方都有相应的许可标头,以避免项目采用者可能产生的混淆。

    如果您执行所谓的“着色”(包括 jar 中其他库的类),那么您很可能最终会在 META-INF 目录中获得它们的许可证。请注意,如果相应许可证文件的名称只是 LICENSE,它可能会覆盖您项目的许可证。

    您通常会将许可证文件放在src/main/resources/META-INF 目录下。

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2010-10-29
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多