2012-02-10 49 views
7

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

如果我把执照POM文件里的标签是否意味着我的整个项目有执照吗?

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

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

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

所以很困惑...

+0

我开始回答这个问题,但后来发现它并不像听起来那么容易。我认为它可以作为继承,但它真的如此吗?那么可能的双重授权呢?也在等待有人更明智地回答... – 2012-02-10 12:40:38

+4

我投票结束这个问题作为题外话,因为**它是关于许可或法律问题**,而不是编程或软件开发。 [见这里](http://meta.stackoverflow.com/a/274964/1402846)了解更多信息,以及[帮助/话题]。 – 2015-06-18 22:33:57

回答

2

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

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

如果定义在POM许可证,这意味着产生Maven站点时Maven站点插件会使用该字符串。

最好是具有相应的许可头球高出每个类,以避免该项目的采用可能的混淆。

如果你做了什么被称为“阴影”(包括其他图书馆在你的罐子类),那么你将最有可能最终有他们在你的META-INF目录中的许可证。要小心,因为它可能会覆盖项目的许可证,如果相应许可证文件的名称只是许可证。

您通常放置许可证文件(S)的src/main/resources/META-INF目录下。

5

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

的问题是,作为一个软件用户,希望被许可标准,我怎么能肯定确保所有文件(在软件包)都属于同一个软件许可证。一些开源许可证之间存在细微的差异和使用含义。

惠普开放源代码许可扫描系统。

http://www.fossology.org/

这使组织能够将扫描的第三方libaries的源代码,并发现该许可证。此分析遵循随时间推移出现的标准技术(自述文件中的许可证,评论标题中的许可证等)。对于组织谁愿意外包这项工作,有商业公司维护的开源软件数据库:

有一个在隧道尽头的一些情况。 Linux基金会已经开始一项计划来解决这一问题:

http://spdx.org/

这是一个伟大的想法。创建一个允许软件开发人员明确声明每个文件许可证的标准。该组织的一个真正成功就是制定一个通用许可证名单。正如我所看到的,唯一的缺点是缺乏开发人员采用和工具支持。

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

+0

+1:非常好的评论。 – carlspring 2012-02-10 14:56:17