Maven许可

ili*_*ija 8 licensing maven

我对将许可信息放入maven项目的各种方法感到困惑.

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

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

如果我将许可证放在每个.java文件的开头,该怎么办?这是否意味着我写的每个班级都有不同的许可证?

当我在POM文件的标题中有许可证信息时的情况如何.这是否意味着所有文件都在该许可下?

如此迷茫...

Mar*_*nor 5

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

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

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

http://www.fossology.org/

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

隧道尽头有一些亮光.Linux基金会已经启动了一项解决此问题的计划:

http://spdx.org/

这是一个好主意.创建一个允许软件开发人员明确说明每个文件的许可证的标准.该小组的一个真正成功是组装一个共同的许可证名称列表.正如我所看到的,唯一的缺点是缺乏开发人员采用和工具支持.

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


car*_*ing 2

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

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

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

最好在每个类上方都有相应的许可标头,以避免项目采用者可能感到困惑。

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

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