我们想要发布一个 Maven POM,它可用作各种项目的父 POM。有些使用 POM 的项目将是开源的,但有些则不会。为了将我们的父 POM 指定为开源,我们包括以下内容:
<licenses>
<license>
<name>Apache-2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
Run Code Online (Sandbox Code Playgroud)
这实质上是说,“这个项目是开源的”。
不幸的是,由于POM 继承,任何使用此父 POM 的项目也将有效地表示“该项目也是开源的”,因为所有后代项目的有效 POM 也将包含相同的许可证部分。
开发人员可以尝试记住包含一些<licenses>部分来覆盖此许可证,但父 POM 的重点是它应该为开发人员提供更少的工作,而不是更多的工作。此外,一些私人项目(甚至我们的)可能根本不希望表明许可证!
如果不通过 POM 继承有效地使所有子项目也开源,我们的公共父 POM 如何表明它是开源的?<licenses>例如,是否有 POM 设置来防止该部分被继承?
更新:我为此功能提交了改进请求单MNG-7562 。
小智 0
从我的角度来看,你有两个选择:
<licenses>在 POM 中,如果项目不符合所提供的许可证,则期望使用它的开发人员会覆盖它。<licenses>并包含在README许可证中(在这种情况下,使用您的 POM 的开发人员还必须指定许可证(如果需要)。编辑:删除有关仅适用于 url 的子继承属性的部分(请参阅下面的评论)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |